How to choose the right work surfaces for your kitchen
If you're redesigning your kitchen and you're not sure which worktops to choose, the team at InSinkErator can help with a guide on how to choose the right work surfaces for your kitchen.
FreemarkerView[template=/jar:id:contentproperty:/Themes/insinkerator/templates/insinkerator-templates.jar/archive!/META-INF/resources/WEB-INF/templates/insinkerator/com.coremedia.blueprint.common.contentbeans/Page._additionalHead.ftl]
com.coremedia.blueprint.cae.contentbeans.PageImpl$$[navigation=com.coremedia.blueprint.cae.contentbeans.CMChannelImpl[id=7519574], content=com.coremedia.blueprint.cae.contentbeans.CMChannelImpl[id=7519574]]
Error rendering view
Current store context is not set.
com.coremedia.blueprint.cae.contentbeans.PageImpl$$ com.coremedia.objectserver.dataviews.DataView com.coremedia.dispatch.HasCustomType com.coremedia.blueprint.cae.contentbeans.PageImpl com.coremedia.blueprint.common.contentbeans.Page com.coremedia.blueprint.cae.contentbeans.AbstractPageImpl com.coremedia.blueprint.common.contentbeans.AbstractPage com.coremedia.blueprint.common.datevalidation.ValidityPeriod com.coremedia.objectserver.dataviews.AssumesIdentity java.lang.Object
com.coremedia.objectserver.view.ViewException: Error rendering view at com.coremedia.objectserver.view.ViewUtils.rethrow(ViewUtils.java:344) at com.coremedia.objectserver.view.freemarker.FreemarkerViewEngine$FreemarkerView.render(FreemarkerViewEngine.java:154) at com.coremedia.objectserver.view.ExceptionHandlingViewDecorator$ExceptionDecorator.decorate(ExceptionHandlingViewDecorator.java:135) at com.coremedia.objectserver.view.ViewDecoratorBase$DecoratingBaseView.render(ViewDecoratorBase.java:344) at com.coremedia.objectserver.view.ViewDecoratorBase$DecoratingServletAndTextView.render(ViewDecoratorBase.java:428) at com.coremedia.objectserver.view.ViewDecoratorBase$DecoratingBaseView.render(ViewDecoratorBase.java:346) at com.coremedia.objectserver.view.ViewDecoratorBase$DecoratingServletAndTextView.render(ViewDecoratorBase.java:428) at com.coremedia.objectserver.view.ViewDecoratorBase$DecoratingBaseView.render(ViewDecoratorBase.java:346) at com.coremedia.objectserver.view.ViewDecoratorBase$DecoratingServletAndTextView.render(ViewDecoratorBase.java:428) at com.coremedia.objectserver.view.ExceptionHandlingViewDecorator$ExceptionDecorator.decorate(ExceptionHandlingViewDecorator.java:135) at com.coremedia.objectserver.view.ViewDecoratorBase$DecoratingBaseView.render(ViewDecoratorBase.java:344) at com.coremedia.objectserver.view.ViewDecoratorBase$DecoratingServletAndTextView.render(ViewDecoratorBase.java:428) at com.coremedia.objectserver.view.ViewUtils.render(ViewUtils.java:184) at com.coremedia.objectserver.view.ViewUtils.render(ViewUtils.java:124) at com.coremedia.objectserver.view.freemarker.impl.CAEFreemarkerFacadeImpl.include(CAEFreemarkerFacadeImpl.java:159) at jdk.internal.reflect.GeneratedMethodAccessor288.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at freemarker.ext.beans.BeansWrapper.invokeMethod(BeansWrapper.java:1552) at freemarker.ext.beans.SimpleMethodModel.exec(SimpleMethodModel.java:73) at freemarker.core.MethodCall._eval(MethodCall.java:62) at freemarker.core.Expression.eval(Expression.java:101) at freemarker.core.DollarVariable.calculateInterpolatedStringOrMarkup(DollarVariable.java:100) at freemarker.core.DollarVariable.accept(DollarVariable.java:63) at freemarker.core.Environment.visit(Environment.java:383) at freemarker.core.Environment.visitAndTransform(Environment.java:514) at freemarker.core.CompressedBlock.accept(CompressedBlock.java:42) at freemarker.core.Environment.visit(Environment.java:383) at freemarker.core.Environment.invokeMacroOrFunctionCommonPart(Environment.java:889) at freemarker.core.Environment.invokeMacro(Environment.java:825) at freemarker.core.UnifiedCall.accept(UnifiedCall.java:84) at freemarker.core.Environment.visit(Environment.java:347) at freemarker.core.Environment.visit(Environment.java:353) at freemarker.core.Environment.process(Environment.java:326) at com.coremedia.objectserver.view.freemarker.FreemarkerViewEngine$FreemarkerView.render(FreemarkerViewEngine.java:150) at com.coremedia.objectserver.view.ExceptionHandlingViewDecorator$ExceptionDecorator.decorate(ExceptionHandlingViewDecorator.java:135) at com.coremedia.objectserver.view.ViewDecoratorBase$DecoratingBaseView.render(ViewDecoratorBase.java:344) at com.coremedia.objectserver.view.ViewDecoratorBase$DecoratingServletAndTextView.render(ViewDecoratorBase.java:428) at com.coremedia.objectserver.view.ViewDecoratorBase$DecoratingBaseView.render(ViewDecoratorBase.java:346) at com.coremedia.objectserver.view.ViewDecoratorBase$DecoratingServletAndTextView.render(ViewDecoratorBase.java:428) at com.coremedia.objectserver.view.ViewDecoratorBase$DecoratingBaseView.render(ViewDecoratorBase.java:346) at com.coremedia.objectserver.view.ViewDecoratorBase$DecoratingServletAndTextView.render(ViewDecoratorBase.java:428) at com.coremedia.objectserver.view.ExceptionHandlingViewDecorator$ExceptionDecorator.decorate(ExceptionHandlingViewDecorator.java:135) at com.coremedia.objectserver.view.ViewDecoratorBase$DecoratingBaseView.render(ViewDecoratorBase.java:344) at com.coremedia.objectserver.view.ViewDecoratorBase$DecoratingServletAndTextView.render(ViewDecoratorBase.java:428) at com.coremedia.objectserver.view.ViewUtils.render(ViewUtils.java:184) at com.coremedia.objectserver.view.ViewUtils.render(ViewUtils.java:124) at com.coremedia.objectserver.view.freemarker.impl.CAEFreemarkerFacadeImpl.include(CAEFreemarkerFacadeImpl.java:159) at jdk.internal.reflect.GeneratedMethodAccessor288.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at freemarker.ext.beans.BeansWrapper.invokeMethod(BeansWrapper.java:1552) at freemarker.ext.beans.SimpleMethodModel.exec(SimpleMethodModel.java:73) at freemarker.core.MethodCall._eval(MethodCall.java:62) at freemarker.core.Expression.eval(Expression.java:101) at freemarker.core.DollarVariable.calculateInterpolatedStringOrMarkup(DollarVariable.java:100) at freemarker.core.DollarVariable.accept(DollarVariable.java:63) at freemarker.core.Environment.visit(Environment.java:383) at freemarker.core.Environment.visitAndTransform(Environment.java:514) at freemarker.core.CompressedBlock.accept(CompressedBlock.java:42) at freemarker.core.Environment.visit(Environment.java:383) at freemarker.core.Environment.invokeMacroOrFunctionCommonPart(Environment.java:889) at freemarker.core.Environment.invokeMacro(Environment.java:825) at freemarker.core.UnifiedCall.accept(UnifiedCall.java:84) at freemarker.core.Environment.visit(Environment.java:347) at freemarker.core.Environment.visit(Environment.java:353) at freemarker.core.Environment.process(Environment.java:326) at com.coremedia.objectserver.view.freemarker.FreemarkerViewEngine$FreemarkerView.render(FreemarkerViewEngine.java:150) at com.coremedia.objectserver.view.freemarker.FreemarkerViewEngine$FreemarkerView.render(FreemarkerViewEngine.java:122) at com.coremedia.objectserver.view.ExceptionHandlingViewDecorator$ExceptionDecorator.decorate(ExceptionHandlingViewDecorator.java:113) at com.coremedia.objectserver.view.ViewDecoratorBase$DecoratingBaseView.render(ViewDecoratorBase.java:334) at com.coremedia.objectserver.view.ViewDecoratorBase$DecoratingServletAndTextView.render(ViewDecoratorBase.java:422) at com.coremedia.objectserver.view.ViewDecoratorBase$DecoratingBaseView.render(ViewDecoratorBase.java:336) at com.coremedia.objectserver.view.ViewDecoratorBase$DecoratingServletAndTextView.render(ViewDecoratorBase.java:422) at com.coremedia.objectserver.view.ViewDecoratorBase$DecoratingBaseView.render(ViewDecoratorBase.java:336) at com.coremedia.objectserver.view.ViewDecoratorBase$DecoratingServletAndTextView.render(ViewDecoratorBase.java:422) at com.coremedia.objectserver.view.ExceptionHandlingViewDecorator$ExceptionDecorator.decorate(ExceptionHandlingViewDecorator.java:113) at com.coremedia.objectserver.view.ViewDecoratorBase$DecoratingBaseView.render(ViewDecoratorBase.java:334) at com.coremedia.objectserver.view.ViewDecoratorBase$DecoratingServletAndTextView.render(ViewDecoratorBase.java:422) at com.coremedia.objectserver.view.ViewUtils.render(ViewUtils.java:152) at com.coremedia.objectserver.view.ViewUtils.render(ViewUtils.java:109) at com.coremedia.objectserver.view.BeanView.renderMergedOutputModel(BeanView.java:63) at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:316) at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1401) at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1145) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1084) at com.coremedia.objectserver.web.DispatcherServlet.doDispatch(DispatcherServlet.java:69) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:963) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898) at javax.servlet.http.HttpServlet.service(HttpServlet.java:655) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) at javax.servlet.http.HttpServlet.service(HttpServlet.java:764) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) at com.coremedia.livecontext.fragment.FragmentContextProvider.doFilter(FragmentContextProvider.java:71) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) at com.coremedia.blueprint.cae.filter.PreviewViewFilter.doFilterInternal(PreviewViewFilter.java:48) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) at org.springframework.web.filter.AbstractRequestLoggingFilter.doFilterInternal(AbstractRequestLoggingFilter.java:289) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) at com.coremedia.blueprint.cae.filter.SiteFilter.doFilter(SiteFilter.java:54) at com.emerson.globalization.web.filter.VirtualSiteFilter.doFilter(VirtualSiteFilter.java:40) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) at com.coremedia.livecontext.preview.PreviewMarkerFilter.doFilter(PreviewMarkerFilter.java:35) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) at com.coremedia.blueprint.livecontext.ecommerce.filter.CommerceConnectionFilter.doFilter(CommerceConnectionFilter.java:44) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) at com.coremedia.blueprint.cae.filter.SiteFilter.doFilter(SiteFilter.java:54) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:327) at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:122) at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:116) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:126) at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:81) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:109) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103) at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) at org.springframework.security.web.csrf.CsrfFilter.doFilterInternal(CsrfFilter.java:117) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90) at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110) at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:211) at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:183) at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:354) at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:267) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) at com.emerson.blueprint.component.cae.csrf.CsrfLegacyTokenGetterFilter.doFilterInternal(CsrfLegacyTokenGetterFilter.java:19) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:96) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) at com.coremedia.blueprint.cae.filter.RequestRejectedExceptionFilter.doFilter(RequestRejectedExceptionFilter.java:41) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:687) at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:769) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:360) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:890) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1787) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.base/java.lang.Thread.run(Thread.java:829) Caused by: com.coremedia.blueprint.base.livecontext.ecommerce.common.NoStoreContextAvailable: Current store context is not set. at com.coremedia.blueprint.base.livecontext.ecommerce.common.CurrentStoreContext.lambda$get$0(CurrentStoreContext.java:31) at java.base/java.util.Optional.orElseThrow(Optional.java:408) at com.coremedia.blueprint.base.livecontext.ecommerce.common.CurrentStoreContext.get(CurrentStoreContext.java:31) at com.emerson.web.taglib.EmersonFreemarkerFacade.getStoreContext(EmersonFreemarkerFacade.java:552) at jdk.internal.reflect.GeneratedMethodAccessor373.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at freemarker.ext.beans.BeansWrapper.invokeMethod(BeansWrapper.java:1552) at freemarker.ext.beans.SimpleMethodModel.exec(SimpleMethodModel.java:73) at freemarker.core.MethodCall._eval(MethodCall.java:62) at freemarker.core.Expression.eval(Expression.java:101) at freemarker.core.ReturnInstruction.accept(ReturnInstruction.java:38) at freemarker.core.Environment.visit(Environment.java:383) at freemarker.core.Environment.invokeMacroOrFunctionCommonPart(Environment.java:889) at freemarker.core.Environment.invokeMacro(Environment.java:825) at freemarker.core.Environment.invokeFunction(Environment.java:841) at freemarker.core.MethodCall._eval(MethodCall.java:65) at freemarker.core.Expression.eval(Expression.java:101) at freemarker.core.Assignment.accept(Assignment.java:134) at freemarker.core.Environment.visit(Environment.java:347) at freemarker.core.Environment.visit(Environment.java:353) at freemarker.core.Environment.process(Environment.java:326) at com.coremedia.objectserver.view.freemarker.FreemarkerViewEngine$FreemarkerView.render(FreemarkerViewEngine.java:150) ... 196 more
Choosing the right work surface for your kitchen shouldn’t be a rushed decision. You want something that looks good and fits within your budget that is practical and durable too.
Work surfaces often cover the expanse of the space and they are likely to be the first thing your eye is drawn to when glancing at an image of a kitchen.
Don’t underestimate the power of worktops to transform a kitchen. Going for gleaming black granite surfaces can make a dramatic statement and create a trendy modern space, whereas chunky wooden countertops bring an instant wholesome and homely appeal epitomised by the Great British Bake Off.
Durable and stylish kitchen worktops are also deemed highly desirable by estate agents in adding value to your home.
But how do you choose the right work surface for your kitchen? Read on for the advantages and potential disadvantages of the different worktop materials on the market before you make your decision.
The reason that people choose wood kitchen surfaces is for their appearance - they instantly add character and a homely warmth to any kitchen. If you like the look of a traditional country kitchen or own a period property, this might be the ideal choice of work surface.
There is also a large variety of wood available so that you can choose something that matches the look you are going for in your kitchen. Wood types for work surfaces include:
You can also choose from a large selection of stains, finishes and edge treatments which also offer a different style to your kitchen.
Wood can also be salvaged and repurposed for your work surface and most woods are recyclable.
The one big disadvantage to a wooden kitchen surface is that it is high maintenance. Wood is much softer than stone surfaces and can easily be damaged by heat and water and stained by food.
You will need to put down a heat proof mat before placing most objects on the kitchen surface. Even the bottom of a wet drink can or a dripping hand soap by the kitchen sink might stain the surface. A magazine or newspaper can also stain the wood if there is any moisture on the surface to dampen the ink. Fruits like strawberries or watermelon can also stain wooden kitchen worktops.
The wood colour can fade in the sunlight and warp if the kitchen changes temperature and the wood needs to be sealed properly to prevent germs. The surface needs to be consistently treated with a mineral oil and wax to prevent stain and water damage and over time, the wood kitchen surface will need to be sanded down to remove any stains and refinished.
You will also have to be careful what cleaning product you clean the wood surface with. Preferably use hot soapy water and the make sure you immediately dry the surfaces by hand. If you clean your wooden worktops with an antibacterial cleaner or kitchen wipes, you will need to re-oil the surface once a month as the cleaning product will wear down the protective layers.
Ideally, think about having a different material around the kitchen sink area as this area is hard to keep dry and the wood can slowly turn black if exposed to water over time. Ideally install a hot water tap so that you don’t have a kettle placed on the wooden work surface that might drip boiling water on the wood - placing a kettle and mugs on mats would be a hassle and it also looks messy.
Quartz is very tough, durable and man-made. It is resistant to scratches and stains and it doesn’t need to be treated or sealed.
Quartz has a luxurious high gloss appearance and is easy to clean, disinfect and wipe down with any cleaning product.
There is a huge variety of colours and designs on the market so you can choose something that appeals to you.
Quartz work surfaces can be expensive so shop around before you buy. You also need to make sure that you put a heat-proof mat on the quartz surface before putting a hot pan down, as the heat can damage the surface.
Granite kitchen work surfaces
Granite has the look of luxury so it will instantly add an upmarket look to your kitchen. It is resistant to chipping and scratching and is highly durable. It is also very easy to clean.
No piece of granite is the same as it is a natural stone so you can source something that is unique to your kitchen
In order to remain durable and prevent stains from forming, granite kitchen countertops need to be sealed once a year. While good quality granite is resistant, you should still be careful about mopping up spills quickly to prevent staining – especially oils, wine and acids.
Granite is very heavy and difficult to transport and install, so you’ll need to make sure you use a reliable and trusted installer.
Marble is also a natural stone and kitchen surfaces will immediately create an expensive look in your kitchen.
It is also a very cool surface which makes it useful in a hot climate - or if you regularly make pastry!
Marble is fairly chip and stain resistant. It can be easily cleaned and is naturally waterproof. The grains of the marble can also disguise any stains.
Marble is a very porous surface so you will need to seal it annually. You also need to continue to be very careful with acids as they can cause etching. For instance, just leaving a slice of lemon on a marble kitchen work surface overnight can leave a mark. Wine and fruit can also easily stain marble worktops.
Soapstone is very hygienic in the kitchen as it is non-porous and so therefore very resistant to staining and bacteria.
It is not as durable as other stone surfaces but it can be oiled and sanded if any damage occurs.
There is no sealing needed for soapstone (like wood for example) but it does need regular oiling, which can be high maintenance.
Professional kitchens use stainless steel because it is the most hygenic. It also doesn’t burn, rust or stain. It is also completely recyclable.
Stainless steel shows up fingerprints - for this reason, it would be hard work if you have kids in the home with sticky fingers! Water marks and limescale are also very visible on stainless steel and the surface can dent easily.
Stainless steel is great for a certain look, but there is no variety in colour. It can look plain, industrial and cold if not styled well.
Glass is easy to colour, cut and shape and can look really sleek in a modern kitchen. You can add coloured lighting underneath glass kitchen work surfaces for an eye-catching look.
If cut thickly, glass surfaces can be durable and they are easy to clean and stain resistant.
Glass can easily crack if a heavy object is placed on the surface. It is certainly a kitchen work surface, like wood, where you are choosing look over durability and practicality.
Laminate is cheap so if you are on a tight budget or renting out your home, this is a good option for kitchen work surfaces. You can also fit the surfaces yourself saving more money.
You can also buy laminate work surfaces which look like wood or natural stone so you can get a similar look for a cheaper price.
Laminate is easy to clean and wipe down with any cleaning product.
Compared to stone kitchen work surfaces laminate isn’t as durable as it can be damaged by heat and scratches. If there is any damage, you have to replace the entire section.
You can install tiled kitchen work surfaces yourself if you need to save money. They are stain and heat resistant. There are numerous different options out there for colour, patterns and shapes. Moroccan and geometric patterned tiles are currently on-trend and add a unique look to your kitchen.
Tiles can create uneven surfaces if you aren't careful, which may add some character to your kitchen, but isn’t so practical when placing down a chopping board!
A tip is to buy a dark colour grout so that any stains can blend in.