Skip to main content

Guide

Best WordPress Starter Themes for Developers in 2026

WordPress powers 43% of the web. Compare the best developer-focused WordPress starter themes — Underscores, GeneratePress, Sage (Roots), and headless.

StarterPick Team

TL;DR

WordPress still powers 43% of the web, and its starter theme ecosystem splits into two camps: traditional PHP themes (Underscores, GeneratePress) and modern developer tooling (Sage with Blade/Composer). Headless WordPress with Next.js is the third path — best when you need WordPress's editing experience with React's performance. Sage is the winner for developers who want to write code they're proud of; Underscores is for learning; headless is for teams committed to a JavaScript frontend.

WordPress: Still 43% of the Web

WordPress in 2026 remains the most-deployed CMS by a wide margin. Full Site Editing (FSE), the Block Editor (Gutenberg), and the Site Editor make WordPress simultaneously more powerful and more complex for developers.

For developers building on WordPress — whether custom theme development, client sites, or WordPress-backed SaaS — the starter theme landscape has branched into three distinct paths:

  1. Traditional PHP themes — Server-rendered, PHP templates, familiar but dated DX
  2. Modern PHP with Blade/Composer — Sage (Roots) brings Laravel-style tooling to WordPress
  3. Headless WordPress — WordPress as CMS API, Next.js or Nuxt for the frontend

The right choice depends on your team's background, the client's editing requirements, and whether you're building a content site or a full application.

Quick Comparison

StarterPriceApproachPHP StyleBuild SystemFSEBest For
Sage (Roots)FreeModern PHPBlade templatesVite⚠️Developer-driven themes
Underscores (_s)FreeTraditionalPlain PHPNone⚠️Learning, minimal baseline
GeneratePressFree/$59/yrTraditional + hooksOOPWebpackClient sites, performance
BlocksyFree/$69/yrBlock-basedOOPWebpackModern FSE development
Faust.js (WPEngine)FreeHeadlessVite✅ (backend)Decoupled Next.js frontend

The Starters

Sage (Roots) — Best for Developers

Price: Free | Creator: Roots team | GitHub Stars: 12k+

The most opinionated developer-focused WordPress starter. Blade templating (Laravel's template engine), Composer dependency management, Vite asset bundling, and Bootstrap or Tailwind CSS. Feels like modern PHP development, not 2010-era WordPress spaghetti.

composer create-project roots/sage my-theme
# Choose: Tailwind or Bootstrap
# Run: npm install && npm run dev

Directory structure:

├── app/
│   ├── View/Composers/  # Data providers for Blade templates
│   └── setup.php        # Theme setup, hooks, filters
├── resources/
│   ├── views/           # Blade templates (NOT PHP template files)
│   │   ├── layouts/     # Base layout templates
│   │   └── partials/    # Reusable components
│   ├── styles/          # Tailwind/CSS source files
│   └── scripts/         # JavaScript/TypeScript
├── vendor/              # Composer dependencies
└── composer.json

Blade templating example:

{{-- resources/views/index.blade.php --}}
@extends('layouts.app')

@section('content')
  @while(have_posts())
    @php(the_post())
    @include('partials.content-' . get_post_type())
  @endwhile
@endsection
// app/View/Composers/FrontPage.php — data for templates
namespace App\View\Composers;

use Roots\Acorn\View\Composer;

class FrontPage extends Composer
{
    protected static $views = ['front-page'];

    public function with()
    {
        return [
            'featuredPosts' => $this->featuredPosts(),
        ];
    }

    private function featuredPosts()
    {
        return get_posts(['tag' => 'featured', 'numberposts' => 3]);
    }
}

Choose if: You're a PHP developer who wants modern tooling in WordPress — the developer experience is significantly better than standard WordPress.

Underscores (_s) — Best Minimal Baseline

Price: Free | Creator: Automattic | GitHub Stars: 9k+

The official WordPress starter theme from Automattic. A blank-slate PHP theme following WordPress coding standards. No build system, no framework — clean PHP, HTML, and CSS. The minimum viable WordPress theme.

// functions.php — standard WordPress setup
function mytheme_setup() {
    add_theme_support('automatic-feed-links');
    add_theme_support('title-tag');
    add_theme_support('post-thumbnails');
    add_theme_support('html5', ['search-form', 'comment-form', 'comment-list', 'gallery', 'caption']);
    add_theme_support('customize-selective-refresh-widgets');

    register_nav_menus([
        'menu-1' => esc_html__('Primary', 'mytheme'),
    ]);
}
add_action('after_setup_theme', 'mytheme_setup');

Generate via: underscores.me (web UI) or npx create-wordpress-theme

Choose if: You're learning WordPress theme development, need an absolute minimum starting point, or need to understand WordPress hooks and the template hierarchy from scratch.

GeneratePress — Best Performance + Client Sites

Price: Free / $59/year (GP Premium) | Creator: Tom Usborne | Active Installs: 300k+

GeneratePress is a performance-focused starter framework theme. Minimal markup, no jQuery dependency, hook system for customization, and FSE compatibility. The base theme scores 100 on PageSpeed; GP Premium adds Sections (page builder), Elements (conditional content), and WooCommerce integration.

Performance characteristics:

  • Page size: ~30KB (vs 100-300KB for most themes)
  • No jQuery dependency in frontend
  • CSS variables for easy brand customization
  • Scores 99-100 PageSpeed with proper setup
// Extending GeneratePress via hooks (no child theme files needed)
add_action('generate_before_footer', function() {
    echo '<div class="custom-cta">';
    echo '<h3>Ready to get started?</h3>';
    echo '<a href="/contact" class="button">Contact Us</a>';
    echo '</div>';
});

Choose if: Building client sites where performance matters, non-developers will maintain the site, and you need a reliable theme framework with a large community.

Blocksy — Best Full Site Editing

Price: Free / $69/year (Pro) | Creator: Creative Themes | Active Installs: 200k+

Blocksy is built specifically for WordPress's Full Site Editing era. Deep integration with the Site Editor, block patterns, global styles, and WooCommerce. The most FSE-native theme in this list — if you're building with blocks and want design freedom, Blocksy delivers.

Choose if: Your project uses the WordPress Site Editor heavily and you want the best FSE theme framework.

Faust.js — Best Headless WordPress

Price: Free | Creator: WPEngine | GitHub Stars: 1k+

Next.js-based headless WordPress framework. WordPress handles content editing via its admin; Faust.js fetches via WPGraphQL and renders in Next.js. The best maintained headless WordPress starter.

// lib/client.ts — WPGraphQL client setup
import { ApolloClient, InMemoryCache } from '@apollo/client';

export const client = new ApolloClient({
  uri: `${process.env.NEXT_PUBLIC_WORDPRESS_API_URL}/graphql`,
  cache: new InMemoryCache(),
});

// app/[...slug]/page.tsx — dynamic page rendering
import { gql } from '@apollo/client';
import { client } from '@/lib/client';

const GET_PAGE = gql`
  query GetPage($slug: ID!) {
    page(id: $slug, idType: URI) {
      title
      content
      date
      featuredImage {
        node { sourceUrl altText }
      }
    }
  }
`;

export default async function Page({ params }: { params: { slug: string[] } }) {
  const { data } = await client.query({
    query: GET_PAGE,
    variables: { slug: params.slug.join('/') },
  });

  return (
    <article>
      <h1>{data.page.title}</h1>
      <div dangerouslySetInnerHTML={{ __html: data.page.content }} />
    </article>
  );
}

Choose if: You want WordPress's editing experience with Next.js performance and React's component model.

WordPress SaaS Patterns

WordPress isn't typically used for SaaS, but these two patterns work well:

WooCommerce + Subscriptions

WooCommerce + WooCommerce Subscriptions ($199/year) provides a $0-$200/year path to subscription-based SaaS on WordPress. Used by thousands of membership sites and recurring billing products. Well-suited for content subscriptions, software licensing, and service businesses.

MemberPress or Restrict Content Pro

WordPress membership plugins that add paywall, member management, and subscription billing. Faster to deploy than custom SaaS platforms for content-gated products. MemberPress supports tiered memberships, course access, and Stripe/PayPal.

Performance: WordPress vs Modern Frameworks

MetricWordPress + GeneratePressNext.js StaticAstro
TTFB100-400ms10-50ms10-50ms
Bundle Size~30KB (minimal theme)~100KB~10KB
PageSpeed90-9995-10099-100
Server RequiredYes (PHP)OptionalNo

The performance gap is closeable with caching (Cloudflare, WP Rocket) but WordPress will never match static sites on raw TTFB. For content SEO, scores above 90 are functionally equivalent.

Is WordPress Right for Your Project?

WordPress makes sense for:

  • Content-heavy sites where non-technical editors update content daily
  • Client projects where the client needs a familiar, easy-to-maintain CMS
  • Teams that already know WordPress and PHP well
  • Products where WooCommerce extensions cover the e-commerce needs
  • Sites where the plugin ecosystem solves hard problems (SEO, forms, e-commerce)

Consider a modern framework instead for:

  • SaaS applications with complex user flows and custom business logic
  • Real-time features (WebSockets, live updates) that PHP handles poorly
  • API-first architectures where multiple frontends consume the same data
  • Applications where developer hiring is a bottleneck (PHP pool is smaller than JavaScript for new projects)

Sage (Roots): Modern PHP for WordPress

Sage is the standout choice for professional WordPress theme development. Built by the Roots team (who also created Trellis for server provisioning and Bedrock for WordPress folder structure), Sage 11 brings Laravel-quality tooling to WordPress: Blade templates, Composer dependency management, webpack/Vite asset pipeline, and PSR-4 autoloading.

The Blade templating engine is one of the clearest wins: @extends, @section, @include, and @yield make templates composable and readable in a way that raw PHP files with get_template_part() calls don't. Variable scoping and escaping work consistently. Template inheritance is clean.

{{-- resources/views/single.blade.php --}}
@extends('layouts.app')

@section('content')
  @while(have_posts()) @php(the_post())
    <article @php(post_class())>
      <h1>{!! get_the_title() !!}</h1>
      <div class="entry-content">
        @php(the_content())
      </div>
    </article>
  @endwhile
@endsection

Sage requires a higher WordPress developer ceiling: you need to understand both WordPress's template hierarchy (how WordPress selects templates) and Blade templating, plus be comfortable with Composer and a Node.js build pipeline. It's not the right starter for a WordPress developer who learned the platform through the block editor. It is the right starter for a backend developer who wants to bring professional software development practices to WordPress.

The Roots suite (Sage + Trellis + Bedrock) defines the 2026 standard for professional WordPress development. Bedrock gives you an environment-variable-based configuration system and Composer-managed plugins. Trellis gives you Ansible-based server provisioning for local development and deployment. Together, they make WordPress development feel closer to modern application development — with environments, version-controlled configuration, and repeatable deployments.


Headless WordPress: When It Makes Sense

WordPress as a headless CMS — using WordPress's editing UI and REST API while delivering content via a Next.js or Nuxt frontend — is a pattern that makes sense in specific contexts:

The case for headless: Your content team knows WordPress and requires the Gutenberg editor. You need React-based interactivity that server-rendered PHP handles poorly. You want static site generation for content SEO with WordPress as the backend. The WordPress ecosystem has plugins that solve your content problems (SEO, e-commerce, forms) that would take weeks to replicate in a custom CMS.

The case against headless: You now have two systems to maintain, two deployment pipelines, and two failure domains. Gutenberg's block output in the REST API is complex to render correctly in React — not all blocks have clean REST representations. Real-time preview (seeing your Next.js frontend reflect changes before publishing) requires additional configuration with WordPress's preview API.

WPGraphQL is the preferred API layer for headless WordPress in 2026, replacing the REST API for most use cases. It provides a GraphQL interface over WordPress data — posts, pages, taxonomies, custom fields — with Gatsby Source WordPress and Next.js Apollo Client integrations.

The most pragmatic headless WordPress pattern: use it when migrating an existing WordPress site to a modern frontend (preserve content investment, improve performance), not as the starting architecture for new projects where a headless CMS like Contentful or Sanity would be cleaner from the start.


Gutenberg and the Block Editor

The Gutenberg block editor defines the current WordPress development landscape. Custom block development using @wordpress/create-block is now a core WordPress skill:

npx @wordpress/create-block my-custom-block --template static
cd my-custom-block && npm start

Custom blocks enable: consistent content components for content teams, reusable interactive patterns (accordions, tabbed content, calculators), and controlled content structures that prevent free-form HTML chaos. For professional WordPress development, custom blocks are often the better solution to "the client wants to add interactive content" than page builder plugins.

The block theme system (FSE — Full Site Editing) is mature in WordPress 6.x. Block themes replace traditional theme templates with HTML files containing block markup. They enable no-code site customization through the Site Editor while giving developers a clean, standards-based template system. For new projects targeting non-technical clients who want to customize layout, block themes are the right approach. For developer-controlled themes with complex layout requirements, Sage's Blade templates remain more maintainable.


Child Themes vs. Starter Themes: The Right Mental Model

A common source of confusion in WordPress development is the difference between parent themes, child themes, and starter themes — and when to use each.

Parent themes like GeneratePress and Astra are full-featured themes intended for direct use. They ship with extensive customization options in the WordPress Customizer. You use them either as-is (for clients who need non-developer customization) or as the base for a child theme (for adding custom CSS/PHP without modifying the parent, so updates don't overwrite your changes).

Child themes extend a parent theme. A child theme contains only your customizations — additional CSS, overridden template files, custom functions. Updates to the parent theme don't affect your child theme code. This is the standard pattern for client sites built on commercial themes.

Starter themes like Underscores and Sage are not parent themes — they're development starting points designed to be modified directly. You clone them, customize them, and don't update them from upstream (because your version is no longer the original). Starter themes give you a clean slate with best practices baked in, without the overhead of a full commercial theme.

For client work: use a child theme on GeneratePress or Astra. For custom development projects: use Sage or Underscores as your starting point. The wrong choice (modifying a parent theme directly, or using a starter theme for a client that expects familiar Customizer options) creates ongoing maintenance problems.


PHP Modern Practices in WordPress Development

WordPress has historically lagged behind modern PHP practices, but the gap narrowed significantly in recent years. PHP 8.2+ features are available to WordPress themes and plugins, and tools like Sage and Bedrock bring PHP best practices to the ecosystem.

Typed properties and return types (PHP 7.4+): Type declarations make WordPress plugins safer and easier to refactor. Annotating your domain objects with property types catches type mismatches that silent PHP coercion would otherwise hide.

Named arguments and constructor promotion (PHP 8.0+): Reduces boilerplate in service classes and makes function calls self-documenting. Constructor promotion especially reduces the repetition in dependency-injected WordPress plugins.

Fibers (PHP 8.1+): Cooperative multitasking in PHP, relevant for long-running WordPress processes (background email sends, data imports). Interesting for advanced WordPress plugin architecture.

The practical implication: modern WordPress theme and plugin development with Sage can be genuinely good PHP. The stigma of "WordPress development" as low-quality PHP work reflects the era of unstructured procedural themes, not the current Roots ecosystem with Blade templates, PSR autoloading, and Composer.


Methodology

WordPress starter comparison based on direct evaluation of Underscores, GeneratePress child theme workflow, Sage 11, and WPGraphQL headless implementation as of Q1 2026. Stars and community data from WordPress.org and GitHub. Performance benchmarks from internal testing with Cloudflare cache enabled.

For content sites evaluating whether WordPress or a modern framework is the right choice, see best Gatsby starter kits for the GraphQL static site generation alternative. For the modern JavaScript CMS alternative, see best boilerplates for content and blog platforms. Browse all starters in the StarterPick directory.


Compare WordPress starters and modern SaaS boilerplates in the StarterPick directory.

See how WordPress compares to headless CMS options for content-driven sites.

Find the right JavaScript SaaS boilerplate if WordPress isn't the right fit.

The SaaS Boilerplate Matrix (Free PDF)

20+ SaaS starters compared: pricing, tech stack, auth, payments, and what you actually ship with. Updated monthly. Used by 150+ founders.

Join 150+ SaaS founders. Unsubscribe in one click.