Welcoming the new Flex chair.

True to Panton’s heritage, the Flex chair features exceptional ergonomic features, simple organic aesthetics and a functional and pragmatic approach to materials. The multi-purpose and stackable chair works perfect in a dining setting, home office or as a spare chair when the occasion calls for it.

For professional application, Flex is tested and certified for contract use and ready for anything from conference, hospitality, hotel and other public spaces.

The Flex chair is defined by its tongue-shaped seat, softly curved backrest and elegant steel sledge frame. What sets the chair apart is its outstanding ergonomics. Panton designed the characteristic shape of the seat and back to fit the contours of the human body – providing proper lumbar support and secure a healthy blood flow to the legs. In addition, the frame is designed to offer flexibility and bounce – further improving the seating experience.

The seat and backrest is made from 100% recyclable polypropylene (PP), a material known for its crisp and pleasant surface character, high rigidity, durability and scratch resisdent qualities. The chair sits on a powder-coated sledge steel frame. Flex chair is available in black and slate.

Contact us


From the Panton Archives.

With only a simple hand drawing to go from, Danish design company VERPAN immediately recognized the potential in the chair and began the journey of realizing the chair from concept to reality. The result is a chair that speaks to many due to its unique nature and great value.


At home.

The Flex chair can go anywhere and makes a stylish addition to any modern home. The elegant and classic design is super versatile and easy to use in everyday life. 



A sustainable approach

The Flex chair is manufactured using the latest production methods, and all excess residual material from the production is recycled at the production facility. The Flex chair is assembled with standard screws, making it possible to disassemble the chair to replace parts and extend the product’s lifecycle and ultimately dispose of parts in an environmentally friendly manner.


For Professionals.

For professional application, Flex is tested and certified for contract use and ready for anything from conference, hospitality, hotel and other public spaces. The chair is stackable and comes with linking if required.














Available with linking

The Flex chair is available with integrated linking in the frame.


A true Panton

The VERPAN logo and Verner Panton signature is stamped
underneath the seat as a proof of origin. 

Featured Projects.

Be part of our story @verpancom

Exception in template (\Designs\verpan\Paragraph\Instagram feed.cshtml): System.NullReferenceException: Object reference not set to an instance of an object.
at CompiledRazorTemplates.Dynamic.abaeaacbddefb.Execute()
at RazorEngine.Templating.TemplateBase.RazorEngine.Templating.ITemplate.Run(ExecuteContext context)
at RazorEngine.Templating.TemplateService.Run(ITemplate template, DynamicViewBag viewBag)
at RazorEngine.Templating.TemplateService.Parse(String razorTemplate, Object model, DynamicViewBag viewBag, String cacheName)
at RazorEngine.Razor.Parse[T](String razorTemplate, T model, String cacheName)
at Dynamicweb.Rendering.Template.RenderRazorTemplate()
@inherits Co3.Espresso.Website.TemplateBases.Paragraphs.Carousel @using Dynamicweb.Content.Items @using System.Text @using System.Net @using System.IO @using Newtonsoft.Json @{string refreshTokenUrl ="https://graph.instagram.com/refresh_access_token";int fallbackFeedLimit = 12;int timestampLimit = 432000;int feedLimit = fallbackFeedLimit;string accessToken = string.Empty;bool showCaptions = false;string instagramParagraphItemSystemName = GetString("Item.SystemName");string instagramParagraphItemId = GetString("Item.Id"); string status = "";Item instagramItem = ItemManager.Storage.GetById( instagramParagraphItemSystemName, instagramParagraphItemId );if ( instagramItem != null ){int initialTimestamp = 0;int.TryParse( instagramItem["Timestamp"].ToString(), out initialTimestamp );DateTime lastUpdated;string lastUpdatedCheck = instagramItem["LastUpdated"] != null ? instagramItem["LastUpdated"].ToString() : DateTime.Now.ToString();DateTime.TryParse( lastUpdatedCheck, out lastUpdated );bool.TryParse(instagramItem["InstagramImageCaption"].ToString(), out showCaptions);if ( lastUpdated == null || lastUpdated == DateTime.MinValue ){lastUpdated = DateTime.Now;}string initialToken = instagramItem["InstagramAccessToken"].ToString();int.TryParse( instagramItem["InstagramLimit"].ToString(), out feedLimit );bool fetchNewToken = string.IsNullOrEmpty( initialToken ) == false && initialTimestamp < timestampLimit;if ( fetchNewToken == true ){string url = string.Format("{0}?access_token={1}&grant_type=ig_refresh_token", refreshTokenUrl, initialToken );HttpWebRequest request = ( HttpWebRequest ) WebRequest.Create( url );request.ContentType ="application/json; charset=utf-8";request.PreAuthenticate = true;HttpWebResponse response = request.GetResponse() as HttpWebResponse;if ( response != null ){using ( Stream responseStream = response.GetResponseStream() ){if ( responseStream != null ){StreamReader reader = new StreamReader( responseStream, Encoding.UTF8 );dynamic responds = JsonConvert.DeserializeObject( reader.ReadToEnd() );if ( responds.access_token != 0 ){accessToken = responds.access_token;instagramItem["InstagramAccessToken"] = accessToken;instagramItem["Timestamp"] = responds.expires_in;instagramItem["LastUpdated"] = DateTime.Now;}}}}}else{@* Update timestamp *@double diffBetweenNowAndLastUpdated = ( DateTime.Now - lastUpdated ).TotalSeconds;instagramItem["Timestamp"] = initialTimestamp - Math.Floor( diffBetweenNowAndLastUpdated );}@* Only save Item if lastUpdated is earlier date than today or new token has been fetched *@if ( fetchNewToken == true || lastUpdated.ToString("MM/dd/yyyy") != DateTime.Now.ToString("MM/dd/yyyy") ){instagramItem.Save();}@* Set initial access token from Item if empty *@if ( string.IsNullOrEmpty( accessToken ) == true ){accessToken = initialToken;}} }@if ( string.IsNullOrEmpty( accessToken ) == false ) {<section class="p mt-1 mb-1 col-12" id="instagram-feed-carousel-section" data-status="@status"><div id="instagram-feed-carousel-v2" class="carousel slide p-carousel instagram-feed" data-interval="0" data-pause="hover" data-ride="" data-keyboard="false" data-token="@accessToken" data-limit="@feedLimit" data-caption="@showCaptions"><div id="instagram-feed-v2" class="carousel-inner"></div><a class="carousel-control-prev" data-target="#instagram-feed-carousel"data-slide="prev"></a><a class="carousel-control-next" data-target="#instagram-feed-carousel"data-slide="next"></a></div></section> }