Craft CMS: Why Hand-Coded HTML Beats Page Builders

Craft CMS: Why Hand-Coded HTML Beats Page Builders

Valerie Gaudette
Valerie Gaudette
February 21, 2026
February 21, 2026

The allure of drag-and-drop page builders is obvious. Click, drag, publish. No coding required. For certain projects, that speed makes sense. But for developers building bespoke marketing sites, content-heavy platforms, or anything requiring precise design implementation, there's a different approach gaining traction: starting in Figma, hand-coding the front end, then integrating with Craft CMS.

The Workflow Explained

This workflow trades speed-to-launch for something else entirely: control. Control over every line of markup, every CSS rule, every interaction. It's not the fastest path, but for teams who've felt the pain of builder limitations, it's often the right one. This is the essence of the hand-coded HTML vs page builders debate.

The workflow breaks into four distinct phases. First, designers create component-based systems in Figma, establishing the visual language and interaction patterns. Second, developers build static HTML/CSS/JS prototypes, often using build tools like Vite or Webpack. Third, those static templates convert to Twig, with Craft CMS fields wired up to make content editable. Finally, content modeling shapes how editors interact with the system, defining Matrix blocks, custom fields, and entry structures. This Figma to HTML workflow has become a cornerstone of modern Craft CMS development.

What makes this work is Craft's architectural philosophy. Unlike systems that impose front-end opinions, Craft stays deliberately neutral. Its Twig templating engine lets you write whatever HTML you want. Any HTML document is also a valid Twig file, which means you can start with static markup and add dynamic pieces gradually. There's no fighting against a theme or forcing your design into someone else's component library. Craft CMS Twig templates give developers complete flexibility over output.

Our experience shows that teams who adopt this approach rarely go back. The initial investment pays off in projects that are easier to maintain, faster to load, and more faithful to the original design intent.

Why Not Page Builders?

Drag-and-drop builders serve a purpose. They're excellent for getting something live quickly, empowering non-technical editors, and prototyping ideas. But they come with tradeoffs that matter more for certain projects.

The concerns developers raise most often include:

Code bloat. Builders generate markup you didn't write and can't fully control. Excessive inline styles, deeply nested divs, and JavaScript bundles you don't need. Performance audits suggest page builders can result in 2-3x slower Time to First Byte compared to hand-coded equivalents.

Design constraints. Your Figma design might call for a specific animation, a particular grid structure, or custom hover states. With a builder, you're limited to what's available. With hand-coded HTML, you implement exactly what the design requires.

Maintenance complexity. Builder-generated code is harder to version control, harder to debug, and harder to hand off to another developer. When something breaks, you're troubleshooting someone else's abstractions rather than your own code.

Vendor dependency. If your builder stops being maintained, changes pricing, or removes features you rely on, migration becomes painful. Hand-coded front ends live in your repository, under your control.

None of this makes builders wrong. It makes them wrong for specific contexts, particularly sites where design precision, long-term maintainability, and performance are priorities. When comparing Craft CMS vs WordPress, this flexibility is often a deciding factor for custom CMS development projects.

Where This Workflow Fits Best

This workflow fits particular project types better than others.

Bespoke marketing sites. When brand differentiation matters, cookie-cutter components won't cut it. Hand-coded front ends let designers push boundaries without backend constraints limiting what's possible.

Content-heavy publishing. Sites with complex content relationships benefit from Craft's content modeling capabilities. Matrix fields Craft CMS provides and custom field layouts support any design pattern, and eager loading can dramatically improve performance. One benchmark showed that 150 related entries could cause 937 database queries versus 156 with eager loading, an 83% reduction.

High-performance requirements. If Core Web Vitals optimization matters for SEO or user experience, controlling every asset that loads gives you the ability to cut what you don't need. No framework overhead, no unused CSS, no runtime JavaScript from a builder you never asked for.

Accessibility-critical projects. Implementing proper keyboard navigation, landmark structures, focus management, and reduced motion support requires precise control over markup. Automated builder output can introduce accessibility barriers that are difficult to identify and fix.

Working with marketing teams has taught us that the sites benefiting most from this approach share a common trait: they need to last. Not just work today, but remain maintainable and adaptable over multiple years of content changes, design refreshes, and platform updates.

Making the Decision

Choosing between workflows depends on several factors worth evaluating honestly.

Team composition. Do you have front-end developers comfortable writing HTML, CSS, and JavaScript from scratch? If your team is primarily designers or content editors, a page builder might genuinely serve you better.

Project timeline. Hand-coded builds take longer upfront. If you need something live in two weeks and it doesn't need to be perfect, the speed of a builder has real value.

Editorial needs. Some content teams genuinely need page-building flexibility. They want to create landing pages without developer involvement. Craft can accommodate this through Matrix fields that offer controlled flexibility, but a drag-and-drop builder might better match their expectations.

Compliance requirements. Legal or accessibility mandates sometimes require the level of control that only hand-coded output provides. Automated tools can help audit, but fixing accessibility issues in builder-generated markup is often harder than building correctly from the start.

Hosting and caching architecture. If you're planning aggressive caching approaches, hand-coded builds give you cleaner integration points. Craft Cloud hosting offers static caching that pairs naturally with lean front ends, and plugins like Blitz provide similar capabilities for self-managed hosting.

The workflow question isn't "which is better" but "which fits this project." Both answers can be right depending on context.

Practical Recommendations

If you're evaluating whether to adopt this workflow, a few practical considerations help.

Start with design system maturity. The Figma-to-code workflow works best when designers think in components. If designs are handed off as flat screens without reusable patterns, the translation becomes harder. Invest in design system workflow thinking before expecting smooth handoffs.

Establish clear content modeling early. One of Craft's strengths is flexible content architecture, but flexibility can become chaos without planning. Overly complex models degrade the authoring experience. Define your entry types, Matrix blocks, and field structures before building templates, not after. Strong content modeling CMS practices make a significant difference.

Set up your development environment properly. Craft's documentation recommends DDEV local development, which standardizes environments across different operating systems through containers. A reproducible setup matters when multiple developers touch the same codebase.

Consider your caching approach from the start. Full-page caching dramatically improves performance but requires thought. Community guidance notes that highly personalized or dynamic sites may find it a poor fit. For simpler sites, it's one of the biggest performance wins available.

We recommend this workflow for teams building sites they expect to maintain for three or more years. The upfront investment in clean, hand-coded templates pays dividends in reduced maintenance costs, easier onboarding for new developers, and the flexibility to adapt as requirements change.

Choosing Your Path Forward

The choice between drag-and-drop builders and hand-coded workflows comes down to what you're building for. Builders win on speed-to-launch. Custom builds win on control, performance, and long-term maintainability. Craft CMS supports both approaches, but its architecture particularly rewards developers who want to bring their own front-end code rather than inherit someone else's.

For teams with the front-end skills to execute this workflow, the combination of Figma design systems, hand-coded HTML/CSS/JS, and Craft's Twig templating engine creates sites that perform well, match designs exactly, and remain maintainable years after launch.

If you're considering Craft CMS for a project and weighing how much front-end control you actually need, we can help you evaluate the tradeoffs for your specific situation. Whether that means a fully custom build or a hybrid approach that gives editors more flexibility, the right answer depends on your team, your timeline, and what you're building.

Share this article