Moray
One of Scotland's manufacturing powerhouses.
About Moray
Home to 50 of the country’s 135 whisky distilleries and some of its best-known food producers, Moray sends a flavour of Scottish manufacturing from the north east to the world.
Leading Scottish brands such as Walkers Shortbread and Baxter’s Food Group, makers of the popular Baxter’s soups, have their headquarters in Moray. The food and drinks industry is a major employer.
Moray boasts more manufacturing jobs per head of population than any other part of Scotland. It is also home to French IT contractors Atos, a growing band of digi-tech businesses, as well as luxury cashmere clothing suppliers Johnstons of Elgin.
Spaceflight firm Orbex manufacture its orbital launch vehicle Prime in the town of Forres, making Moray the manufacturing focus of the North Coast Space Cluster (NCSC).
With close links to the cities of Aberdeen and Inverness, Moray’s villages and towns combine a sense of history and tradition with modernity in a rural landscape. The ancient city of Elgin is the central node in a network of smaller market towns including Forres, Keith and Buckie. The village of Findhorn boasts a thriving alternative arts and culture scene, while Tomintoul skirts the breathtaking natural beauty of the Cairngorms National Park, a gateway for adventure seekers, nature lovers and holidaying families alike.
About Moray
7,000
jobs in manufacturing
9
increase predicted for construction sector by 2028
300
business start ups each year
About Moray
What makes working and living in Moray special? Watch our film to hear from the people who have chosen to be here.
Looking to base your business here?
We can help you base your business here. We know the area and can help you to make the right connections to get your Highland base off to a flying start. We offer practical advice, funding, property options and support to help make the transition easy.
Base your business here
If you'd like to speak to us about how we can help, just get in touch.
Contact us
The support we’ve received from HIE over the past five years has enabled us to expand sooner into products such as salmon and chicken jerky. This has also broadened our product appeal in markets across Europe, North America and Asia.
Alan Craig, Director, Meatsnacks Group
The perfect business location
Situated in the north east of Scotland, the Enterprise Park Forres offers a fantastic working environment. Extending over 100 acres, the park has a wide range of high quality and flexible business space.
Enterprise Park Forres
Manufacturing Innovation Centre Moray
Opening in summer 2025, the new £5.6m Manufacturing Innovation Centre Moray (MICM) will build on the area's manufacturing strengths providing a hub for support and advice to companies locally and across the Highlands and Islands.
Manufacturing Innovation Centre Moray
My Moray
Moray is a location where old-world charm meeting cutting edge business innovation. It's the ideal location for a perfect work/life balance.
My Moray is operated by the local economic partnership, find out about Moray from the people living and working here on their website.
My Moray
There has been a block failure. Block name: newsHighlights - Page Id: 1 - Page Url: 2<br /><br />Exception message: failed to get content with id=27816<br /><br />Stack trace: at Umbraco.Cms.Infrastructure.PublishedCache.PublishedContent.get_ChildrenForAllCultures()+MoveNext()
at System.Linq.Enumerable.WhereEnumerableIterator`1.MoveNext()
at System.Linq.Enumerable.SelectManySingleSelectorIterator`2.MoveNext()
at Umbraco.Extensions.PublishedContentExtensions.EnumerateDescendants(IPublishedContent content, IVariationContextAccessor variationContextAccessor, Boolean orSelf, String culture)+MoveNext()
at System.Linq.Enumerable.WhereEnumerableIterator`1.ToArray()
at System.Linq.Buffer`1..ctor(IEnumerable`1 source)
at System.Linq.OrderedEnumerable`1.GetEnumerator(Int32 minIdx, Int32 maxIdx)+MoveNext()
at System.Linq.Enumerable.SelectIPartitionIterator`2.ToList()
at HIE.Core.Helpers.TagHighlightsHelper.GetHighlights(IPublishedContent currentPage, Tag tag, Int32 pageSize) in /tmp/8dde427a1d00c69/hie/Helpers/TagHighlightsHelper.cs:line 60
at AspNetCore.Views_Shared_ContentBlocks__newsHighlights.ExecuteAsync() in /home/site/wwwroot/Views/Shared/ContentBlocks/_newsHighlights.cshtml:line 36
at Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderPageCoreAsync(IRazorPage page, ViewContext context)
at Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderPageAsync(IRazorPage page, ViewContext context, Boolean invokeViewStarts)
at Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderAsync(ViewContext context)
at Microsoft.AspNetCore.Mvc.ViewFeatures.HtmlHelper.RenderPartialCoreAsync(String partialViewName, Object model, ViewDataDictionary viewData, TextWriter writer)
at Microsoft.AspNetCore.Mvc.ViewFeatures.HtmlHelper.PartialAsync(String partialViewName, Object model, ViewDataDictionary viewData)
at AspNetCore.Views_Shared__ContentBlocks.ExecuteAsync() in /home/site/wwwroot/Views/Shared/_ContentBlocks.cshtml:line 19<br /><br />
There has been a block failure. Block name: relatedContentGrid - Page Id: 1 - Page Url: 2<br /><br />Exception message: failed to get content with id=27816<br /><br />Stack trace: at Umbraco.Cms.Infrastructure.PublishedCache.PublishedContent.get_ChildrenForAllCultures()+MoveNext()
at System.Linq.Enumerable.WhereEnumerableIterator`1.MoveNext()
at System.Linq.Enumerable.SelectManySingleSelectorIterator`2.MoveNext()
at Umbraco.Extensions.PublishedContentExtensions.EnumerateDescendants(IPublishedContent content, IVariationContextAccessor variationContextAccessor, String culture)+MoveNext()
at System.Linq.Enumerable.SelectManySingleSelectorIterator`2.MoveNext()
at Umbraco.Extensions.PublishedContentExtensions.EnumerateDescendants(IPublishedContent content, IVariationContextAccessor variationContextAccessor, String culture)+MoveNext()
at System.Linq.Enumerable.SelectManySingleSelectorIterator`2.MoveNext()
at Umbraco.Extensions.PublishedContentExtensions.EnumerateDescendants(IPublishedContent content, IVariationContextAccessor variationContextAccessor, Boolean orSelf, String culture)+MoveNext()
at System.Linq.Enumerable.TryGetFirst[TSource](IEnumerable`1 source, Func`2 predicate, Boolean& found)
at Umbraco.Extensions.PublishedContentExtensions.DescendantOrSelf[T](IPublishedContent content, IVariationContextAccessor variationContextAccessor, String culture)
at hie.Helpers.PublishedContentHelper.GetNewsNode(IPublishedContent currentNode) in /tmp/8dde427a1d00c69/hie/Helpers/PublishedContentHelper.cs:line 368
at AspNetCore.Views_Shared_ContentBlocks__relatedContentGrid.ExecuteAsync() in /home/site/wwwroot/Views/Shared/ContentBlocks/_relatedContentGrid.cshtml:line 101
at Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderPageCoreAsync(IRazorPage page, ViewContext context)
at Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderPageAsync(IRazorPage page, ViewContext context, Boolean invokeViewStarts)
at Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderAsync(ViewContext context)
at Microsoft.AspNetCore.Mvc.ViewFeatures.HtmlHelper.RenderPartialCoreAsync(String partialViewName, Object model, ViewDataDictionary viewData, TextWriter writer)
at Microsoft.AspNetCore.Mvc.ViewFeatures.HtmlHelper.PartialAsync(String partialViewName, Object model, ViewDataDictionary viewData)
at AspNetCore.Views_Shared__ContentBlocks.ExecuteAsync() in /home/site/wwwroot/Views/Shared/_ContentBlocks.cshtml:line 19<br /><br />
There has been a block failure. Block name: relatedContentGrid - Page Id: 1 - Page Url: 2<br /><br />Exception message: failed to get content with id=27816<br /><br />Stack trace: at Umbraco.Cms.Infrastructure.PublishedCache.PublishedContent.get_ChildrenForAllCultures()+MoveNext()
at System.Linq.Enumerable.WhereEnumerableIterator`1.MoveNext()
at System.Linq.Enumerable.SelectManySingleSelectorIterator`2.MoveNext()
at Umbraco.Extensions.PublishedContentExtensions.EnumerateDescendants(IPublishedContent content, IVariationContextAccessor variationContextAccessor, String culture)+MoveNext()
at System.Linq.Enumerable.SelectManySingleSelectorIterator`2.MoveNext()
at Umbraco.Extensions.PublishedContentExtensions.EnumerateDescendants(IPublishedContent content, IVariationContextAccessor variationContextAccessor, String culture)+MoveNext()
at System.Linq.Enumerable.SelectManySingleSelectorIterator`2.MoveNext()
at Umbraco.Extensions.PublishedContentExtensions.EnumerateDescendants(IPublishedContent content, IVariationContextAccessor variationContextAccessor, Boolean orSelf, String culture)+MoveNext()
at System.Linq.Enumerable.TryGetFirst[TSource](IEnumerable`1 source, Func`2 predicate, Boolean& found)
at Umbraco.Extensions.PublishedContentExtensions.DescendantOrSelf[T](IPublishedContent content, IVariationContextAccessor variationContextAccessor, String culture)
at hie.Helpers.PublishedContentHelper.GetNewsNode(IPublishedContent currentNode) in /tmp/8dde427a1d00c69/hie/Helpers/PublishedContentHelper.cs:line 368
at AspNetCore.Views_Shared_ContentBlocks__relatedContentGrid.ExecuteAsync() in /home/site/wwwroot/Views/Shared/ContentBlocks/_relatedContentGrid.cshtml:line 101
at Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderPageCoreAsync(IRazorPage page, ViewContext context)
at Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderPageAsync(IRazorPage page, ViewContext context, Boolean invokeViewStarts)
at Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderAsync(ViewContext context)
at Microsoft.AspNetCore.Mvc.ViewFeatures.HtmlHelper.RenderPartialCoreAsync(String partialViewName, Object model, ViewDataDictionary viewData, TextWriter writer)
at Microsoft.AspNetCore.Mvc.ViewFeatures.HtmlHelper.PartialAsync(String partialViewName, Object model, ViewDataDictionary viewData)
at AspNetCore.Views_Shared__ContentBlocks.ExecuteAsync() in /home/site/wwwroot/Views/Shared/_ContentBlocks.cshtml:line 19<br /><br />
Newsletter
Sign up for all the latest news, information on investments and development opportunities from across our region.