Error message
Warning: Undefined array key 0 in Drupal\xpt_locationmenu\Plugin\Block\CountryCategoryMenuBlock->get_country() (line 163 of modules/custom/xpt_locationmenu/src/Plugin/Block/CountryCategoryMenuBlock.php).
Drupal\xpt_locationmenu\Plugin\Block\CountryCategoryMenuBlock->get_country() (Line: 26) Drupal\xpt_locationmenu\Plugin\Block\CountryCategoryMenuBlock->build() (Line: 171) Drupal\block\BlockViewBuilder::preRender(Array) call_user_func_array('Drupal\block\BlockViewBuilder::preRender', Array) (Line: 113) Drupal\Core\Render\Renderer->doTrustedCallback('Drupal\block\BlockViewBuilder::preRender', Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 870) Drupal\Core\Render\Renderer->doCallback('#pre_render', 'Drupal\block\BlockViewBuilder::preRender', Array) (Line: 432) Drupal\Core\Render\Renderer->doRender(Array, 1) (Line: 248) Drupal\Core\Render\Renderer->render(Array, 1) (Line: 165) Drupal\Core\Render\Renderer->Drupal\Core\Render\{closure}() (Line: 638) Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 166) Drupal\Core\Render\Renderer->renderInIsolation(Array) (Line: 191) Drupal\Core\Render\Renderer->doRenderPlaceholder(Array) (Line: 723) Drupal\Core\Render\Renderer->Drupal\Core\Render\{closure}() Fiber->start() (Line: 731) Drupal\Core\Render\Renderer->replacePlaceholders(Array) (Line: 608) Drupal\Core\Render\Renderer->doRender(Array, 1) (Line: 248) Drupal\Core\Render\Renderer->render(Array, 1) (Line: 153) Drupal\Core\Render\Renderer->Drupal\Core\Render\{closure}() (Line: 638) Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 154) Drupal\Core\Render\Renderer->renderRoot(Array) (Line: 288) Drupal\Core\Render\HtmlResponseAttachmentsProcessor->renderPlaceholders(Object) (Line: 137) Drupal\Core\Render\HtmlResponseAttachmentsProcessor->processAttachments(Object) (Line: 45) Drupal\Core\EventSubscriber\HtmlResponseSubscriber->onRespond(Object, 'kernel.response', Object) call_user_func(Array, Object, 'kernel.response', Object) (Line: 111) Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.response') (Line: 214) Symfony\Component\HttpKernel\HttpKernel->filterResponse(Object, Object, 1) (Line: 202) Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 76) Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 53) Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 28) Drupal\Core\StackMiddleware\ContentLength->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51) Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 36) Drupal\Core\StackMiddleware\AjaxPageState->handle(Object, 1, 1) (Line: 51) Drupal\Core\StackMiddleware\StackedHttpKernel->handle(Object, 1, 1) (Line: 741) Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
Warning: Trying to access array offset on value of type null in Drupal\xpt_locationmenu\Plugin\Block\CountryCategoryMenuBlock->get_country() (line 163 of modules/custom/xpt_locationmenu/src/Plugin/Block/CountryCategoryMenuBlock.php).
Drupal\xpt_locationmenu\Plugin\Block\CountryCategoryMenuBlock->get_country() (Line: 26) Drupal\xpt_locationmenu\Plugin\Block\CountryCategoryMenuBlock->build() (Line: 171) Drupal\block\BlockViewBuilder::preRender(Array) call_user_func_array('Drupal\block\BlockViewBuilder::preRender', Array) (Line: 113) Drupal\Core\Render\Renderer->doTrustedCallback('Drupal\block\BlockViewBuilder::preRender', Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 870) Drupal\Core\Render\Renderer->doCallback('#pre_render', 'Drupal\block\BlockViewBuilder::preRender', Array) (Line: 432) Drupal\Core\Render\Renderer->doRender(Array, 1) (Line: 248) Drupal\Core\Render\Renderer->render(Array, 1) (Line: 165) Drupal\Core\Render\Renderer->Drupal\Core\Render\{closure}() (Line: 638) Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 166) Drupal\Core\Render\Renderer->renderInIsolation(Array) (Line: 191) Drupal\Core\Render\Renderer->doRenderPlaceholder(Array) (Line: 723) Drupal\Core\Render\Renderer->Drupal\Core\Render\{closure}() Fiber->start() (Line: 731) Drupal\Core\Render\Renderer->replacePlaceholders(Array) (Line: 608) Drupal\Core\Render\Renderer->doRender(Array, 1) (Line: 248) Drupal\Core\Render\Renderer->render(Array, 1) (Line: 153) Drupal\Core\Render\Renderer->Drupal\Core\Render\{closure}() (Line: 638) Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 154) Drupal\Core\Render\Renderer->renderRoot(Array) (Line: 288) Drupal\Core\Render\HtmlResponseAttachmentsProcessor->renderPlaceholders(Object) (Line: 137) Drupal\Core\Render\HtmlResponseAttachmentsProcessor->processAttachments(Object) (Line: 45) Drupal\Core\EventSubscriber\HtmlResponseSubscriber->onRespond(Object, 'kernel.response', Object) call_user_func(Array, Object, 'kernel.response', Object) (Line: 111) Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.response') (Line: 214) Symfony\Component\HttpKernel\HttpKernel->filterResponse(Object, Object, 1) (Line: 202) Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 76) Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 53) Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 28) Drupal\Core\StackMiddleware\ContentLength->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51) Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 36) Drupal\Core\StackMiddleware\AjaxPageState->handle(Object, 1, 1) (Line: 51) Drupal\Core\StackMiddleware\StackedHttpKernel->handle(Object, 1, 1) (Line: 741) Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
Warning: Undefined array key 0 in Drupal\xpt_locationmenu\Plugin\Block\CountryCategoryMenuBlock->get_country() (line 163 of modules/custom/xpt_locationmenu/src/Plugin/Block/CountryCategoryMenuBlock.php).
Drupal\xpt_locationmenu\Plugin\Block\CountryCategoryMenuBlock->get_country() (Line: 26) Drupal\xpt_locationmenu\Plugin\Block\CountryCategoryMenuBlock->build() (Line: 171) Drupal\block\BlockViewBuilder::preRender(Array) call_user_func_array('Drupal\block\BlockViewBuilder::preRender', Array) (Line: 113) Drupal\Core\Render\Renderer->doTrustedCallback('Drupal\block\BlockViewBuilder::preRender', Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 870) Drupal\Core\Render\Renderer->doCallback('#pre_render', 'Drupal\block\BlockViewBuilder::preRender', Array) (Line: 432) Drupal\Core\Render\Renderer->doRender(Array, 1) (Line: 248) Drupal\Core\Render\Renderer->render(Array, 1) (Line: 165) Drupal\Core\Render\Renderer->Drupal\Core\Render\{closure}() (Line: 638) Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 166) Drupal\Core\Render\Renderer->renderInIsolation(Array) (Line: 191) Drupal\Core\Render\Renderer->doRenderPlaceholder(Array) (Line: 723) Drupal\Core\Render\Renderer->Drupal\Core\Render\{closure}() Fiber->start() (Line: 731) Drupal\Core\Render\Renderer->replacePlaceholders(Array) (Line: 608) Drupal\Core\Render\Renderer->doRender(Array, 1) (Line: 248) Drupal\Core\Render\Renderer->render(Array, 1) (Line: 153) Drupal\Core\Render\Renderer->Drupal\Core\Render\{closure}() (Line: 638) Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 154) Drupal\Core\Render\Renderer->renderRoot(Array) (Line: 288) Drupal\Core\Render\HtmlResponseAttachmentsProcessor->renderPlaceholders(Object) (Line: 137) Drupal\Core\Render\HtmlResponseAttachmentsProcessor->processAttachments(Object) (Line: 45) Drupal\Core\EventSubscriber\HtmlResponseSubscriber->onRespond(Object, 'kernel.response', Object) call_user_func(Array, Object, 'kernel.response', Object) (Line: 111) Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.response') (Line: 214) Symfony\Component\HttpKernel\HttpKernel->filterResponse(Object, Object, 1) (Line: 202) Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 76) Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 53) Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 28) Drupal\Core\StackMiddleware\ContentLength->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51) Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 36) Drupal\Core\StackMiddleware\AjaxPageState->handle(Object, 1, 1) (Line: 51) Drupal\Core\StackMiddleware\StackedHttpKernel->handle(Object, 1, 1) (Line: 741) Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
Warning: Trying to access array offset on value of type null in Drupal\xpt_locationmenu\Plugin\Block\CountryCategoryMenuBlock->get_country() (line 163 of modules/custom/xpt_locationmenu/src/Plugin/Block/CountryCategoryMenuBlock.php).
Drupal\xpt_locationmenu\Plugin\Block\CountryCategoryMenuBlock->get_country() (Line: 26) Drupal\xpt_locationmenu\Plugin\Block\CountryCategoryMenuBlock->build() (Line: 171) Drupal\block\BlockViewBuilder::preRender(Array) call_user_func_array('Drupal\block\BlockViewBuilder::preRender', Array) (Line: 113) Drupal\Core\Render\Renderer->doTrustedCallback('Drupal\block\BlockViewBuilder::preRender', Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 870) Drupal\Core\Render\Renderer->doCallback('#pre_render', 'Drupal\block\BlockViewBuilder::preRender', Array) (Line: 432) Drupal\Core\Render\Renderer->doRender(Array, 1) (Line: 248) Drupal\Core\Render\Renderer->render(Array, 1) (Line: 165) Drupal\Core\Render\Renderer->Drupal\Core\Render\{closure}() (Line: 638) Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 166) Drupal\Core\Render\Renderer->renderInIsolation(Array) (Line: 191) Drupal\Core\Render\Renderer->doRenderPlaceholder(Array) (Line: 723) Drupal\Core\Render\Renderer->Drupal\Core\Render\{closure}() Fiber->start() (Line: 731) Drupal\Core\Render\Renderer->replacePlaceholders(Array) (Line: 608) Drupal\Core\Render\Renderer->doRender(Array, 1) (Line: 248) Drupal\Core\Render\Renderer->render(Array, 1) (Line: 153) Drupal\Core\Render\Renderer->Drupal\Core\Render\{closure}() (Line: 638) Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 154) Drupal\Core\Render\Renderer->renderRoot(Array) (Line: 288) Drupal\Core\Render\HtmlResponseAttachmentsProcessor->renderPlaceholders(Object) (Line: 137) Drupal\Core\Render\HtmlResponseAttachmentsProcessor->processAttachments(Object) (Line: 45) Drupal\Core\EventSubscriber\HtmlResponseSubscriber->onRespond(Object, 'kernel.response', Object) call_user_func(Array, Object, 'kernel.response', Object) (Line: 111) Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.response') (Line: 214) Symfony\Component\HttpKernel\HttpKernel->filterResponse(Object, Object, 1) (Line: 202) Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 76) Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 53) Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 28) Drupal\Core\StackMiddleware\ContentLength->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51) Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 36) Drupal\Core\StackMiddleware\AjaxPageState->handle(Object, 1, 1) (Line: 51) Drupal\Core\StackMiddleware\StackedHttpKernel->handle(Object, 1, 1) (Line: 741) Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
Luxembourg is a relatively expensive country. The capital, Luxembourg City, placed 47th out of 226 cities in the Mercer Cost of Living Survey for 2024. While much cheaper than Switzerland's Geneva, the UK's London and the US's New York, Luxembourg is more expensive than Spain's Madrid, the Czech Republic's Prague and Australia's Auckland.
That said, expats do tend to earn rather well in Luxembourg. In fact, it has the highest minimum wage in the EU, and also ranked first for disposable income on the OECD Better Life Index. Expats should therefore be able to afford a comfortable life in the country.
Cost of accommodation in Luxembourg
Housing is expensive in Luxembourg and will be an expats biggest expense. Those who are only planning to stay in the country short term should rent, while those making a permanent move would do well to buy property in Luxembourg. Renting is incredibly costly, especially in the capital. Utilities also tend to be pricey, with electricity prices in Luxembourg being higher than the EU average.
Cost of healthcare in Luxembourg
Expats working in Luxembourg will be eligible to receive public healthcare for free or at highly subsidised rates. Compulsory contributions to the healthcare system are deducted from an expats salary, while their employer also pays towards it on their behalf. The public healthcare system offers excellent services and treatment. That said, private healthcare is also available for those who want more comprehensive cover, but expats will pay quite a lot for this.
Cost of education in Luxembourg
While public schooling is free for all legal residents, the language barrier deters many expats from sending their children to one of these institutions. For this reason, international schools are generally the number one option for expats, but the fees can be exorbitant. Expats should therefore try to negotiate a school allowance into their employment package.
Food and eating out in Luxembourg
Grocery shopping is rather costly in Luxembourg. While certain supermarkets are cheaper than others, expats should expect to pay more for groceries in Luxembourg than in many other European countries.
Similarly, eating out is expensive in Luxembourg. Cheaper restaurants do exist, but even at these establishments, expats can expect to pay at least EUR 18 for a meal.
Cost of living chart for Luxembourg
Prices may vary depending on product and service provider. The list below shows average prices for Luxembourg in February 2022.
Accommodation | |
Three-bedroom apartment in city centre | EUR 3,250 |
Three-bedroom apartment outside city centre | EUR 2,500 |
One-bedroom apartment in city centre | EUR 1,620 |
One-bedroom apartment outside city centre | EUR 1,270 |
Shopping | |
Eggs (dozen) | EUR 3.20 |
Milk (1 litre) | EUR 1.20 |
Rice (1kg) | EUR 1.45 |
Loaf of white bread | EUR 2.50 |
Chicken breasts (1kg) | EUR 11.25 |
Pack of cigarettes (Marlboro) | EUR 5.30 |
Eating out | |
Big Mac Meal | EUR 10 |
Coca-Cola (330ml) | EUR 2.95 |
Cappuccino | EUR 3.55 |
Local beer (500ml) | EUR 5 |
Three-course meal for two at a mid-range restaurant | EUR 75 |
Utilities | |
Mobile-to-mobile call rate (per minute) | EUR 0.20 |
Internet (uncapped ADSL or cable – average per month) | EUR 56 |
Basic utilities (per month for small household) | EUR 243 |
Transport | |
Taxi rate (per kilometre) | EUR 3 |
Bus/train fare in the city centre | EUR 0 |
Petrol/gasoline (per litre) | EUR 1.25 |
Are you an expat living in ?
Expat Arrivals is looking for locals to contribute to this guide, and answer forum questions from others planning their move to . Please contact us if you'd like to contribute.
Expat Health Insurance
Cigna Global Health Insurance
Moving your family abroad can be intimidating, but learning about medical options such as family health insurance early on can help you successfully settle in.
Limited-time offer: 10%* off for life!
Get covered today and enjoy 10%* off your health insurance policy!
*T&Cs apply
Moving Internationally?
International Movers. Get Quotes. Compare Prices.
Sirelo has a network of more than 500 international removal companies that can move your furniture and possessions to your new home. By filling in a form, you’ll get up to 5 quotes from recommended movers. This service is free of charge and will help you select an international moving company that suits your needs and budget.
Get your free no-obligation quotes from select removal companies now!