Are you happy with your logging solution? Would you help us out by taking a 30-second survey? Click here


Hi. I'm a starter theme called _s, or underscores, if you like. I'm a theme meant for hacking so don't use me as a Parent Theme. Instead try turning me into the next, most awesome, WordPress theme out there. That's what I'm here for.

Subscribe to updates I use _s

Statistics on _s

Number of watchers on Github 8235
Number of open issues 40
Average time to close an issue 11 days
Main language CSS
Average time to merge a PR 9 days
Open pull requests 120+
Closed pull requests 71+
Last commit almost 2 years ago
Repo Created about 8 years ago
Repo Last Updated almost 2 years ago
Size 959 KB
Homepage http://underscore...
Organization / Authorautomattic
Page Updated
Do you use _s? Leave a review!
View open issues (40)
View _s activity
View on github
Fresh, new opensource launches ๐Ÿš€๐Ÿš€๐Ÿš€
Trendy new open source projects in your inbox! View examples

Subscribe to our mailing list

Evaluating _s for your project? Score Explanation
Commits Score (?)
Issues & PR Score (?)

Build Status


Hi. I'm a starter theme called _s, or underscores, if you like. I'm a theme meant for hacking so don't use me as a Parent Theme. Instead try turning me into the next, most awesome, WordPress theme out there. That's what I'm here for.

My ultra-minimal CSS might make me look like theme tartare but that means less stuff to get in your way when you're designing your awesome theme. Here are some of the other more interesting things you'll find here:

  • A just right amount of lean, well-commented, modern, HTML5 templates.
  • A helpful 404 template.
  • A custom header implementation in inc/custom-header.php just add the code snippet found in the comments of inc/custom-header.php to your header.php template.
  • Custom template tags in inc/template-tags.php that keep your templates clean and neat and prevent code duplication.
  • Some small tweaks in inc/template-functions.php that can improve your theming experience.
  • A script at js/navigation.js that makes your menu a toggled dropdown on small screens (like your phone), ready for CSS artistry. It's enqueued in functions.php.
  • 2 sample CSS layouts in layouts/ for a sidebar on either side of your content.
  • Smartly organized starter CSS in style.css that will help you to quickly get your design off the ground.
  • Licensed under GPLv2 or later. :) Use it to make something cool.

Getting Started

If you want to keep it simple, head over to and generate your _s based theme from there. You just input the name of the theme you want to create, click the Generate button, and you get your ready-to-awesomize starter theme.

If you want to set things up manually, download _s from GitHub. The first thing you want to do is copy the _s directory and change the name to something else (like, say, megatherium-is-awesome), and then you'll need to do a five-step find and replace on the name in all the templates.

  1. Search for '_s' (inside single quotations) to capture the text domain.
  2. Search for _s_ to capture all the function names.
  3. Search for Text Domain: _s in style.css.
  4. Search for ย _s (with a space before it) to capture DocBlocks.
  5. Search for _s- to capture prefixed handles.


  1. Search for: '_s' and replace with: 'megatherium-is-awesome'
  2. Search for: _s_ and replace with: megatherium_is_awesome_
  3. Search for: Text Domain: _s and replace with: Text Domain: megatherium-is-awesome in style.css.
  4. Search for: ย _s and replace with: ย Megatherium_is_Awesome
  5. Search for: _s- and replace with: megatherium-is-awesome-

Then, update the stylesheet header in style.css, the links in footer.php with your own information and rename _s.pot from languages folder to use the theme's slug. Next, update or delete this readme.

Now you're ready to go! The next step is easy to say, but harder to do: make an awesome WordPress theme. :)

Good luck!

_s open issues Ask a question     (View All Issues)
  • over 3 years aria-haspopup shouldn't be set on list item
  • over 3 years customthemedesign
  • over 3 years A11y issue: an empty link is formed when a custom header image is added
  • over 3 years Help me understand the GPL for commercial use
  • over 3 years wpcom.php - is it still needed?
  • over 3 years Accessibility styling
  • over 3 years Change "current_page_ancestor" to "current-page-ancestor"
  • over 3 years Periods in file headers
  • over 3 years Separate Blog Page loop?
  • over 3 years Missing singular placeholder in comments.php
  • over 3 years Add editor-style.css to _s?
  • over 3 years rel="designer" in footer link
  • over 3 years Translation missing for: Leave a Comment<span class="screen-reader-text"> on %s</span>
  • over 3 years Selective Refresh on Site Title and Tagline
  • over 3 years Selective Refresh on Widgets
  • over 3 years Site Title in the Customizer
  • over 3 years License of this project?
  • over 3 years Possible enhancement: Add <span> tags to Archive page titles
  • over 3 years Font-size mixin - a suggestion
  • almost 4 years Only delete transient when post types that have the category taxonomy are saved
  • almost 4 years Don't style hatom classes
  • almost 4 years Site Logo Support for WordPress 4.5
  • over 4 years Google Search Console reveals some errors with structured data on pages
_s open pull requests (View All Pulls)
  • _s.pot update to reflect current strings
  • comments_popup_link arguments
  • Fixed margin causing x-wide imgs (contained within a figure tag) to overflow content area.
  • Update the replace example in
  • Toggle focus class to allow submenu access on tablets
  • Remove is_home() conditional tag
  • Adding ID to comment labels for post
  • Fixed SASS spacing for consistency.
  • Introducing comment navigation template tags.
  • Use consistent syntax for control structures
  • Removes hentry class from the array of post classes
  • Conditionally include Jetpack compatibility file.
  • Only generate pingback url header tag when relevant.
  • Fix child menus for touch devices
  • Remove superfluous check from comment template
  • Merge diff between sass and css
  • Use delete_category action hook for transient flusher
  • Correct href for skip to content link
  • Add basic Site Logos support in anticipation of WP 4.5 release
  • Remove content-box box-sizing on search fields
  • change .taxonomy-description to more accurate .archive-description
  • calculate gallery image size
  • abbr needs text-decoration removed for FF. pre & abbr were styled in 2 places
  • Add template tag for entry titles for better consistency
  • Remove unnecessary tab character from readme.
  • Redundant styles
  • Only show page entry footer if edit link is available
  • Custom header re-wording
  • `float` implies the use of the block layout
  • Narrowing the scope of the transient flusher to post types that have category as a taxonomy
  • Microformats 2 Changes
  • package.json update for new node.js
  • Escape header attributes.
  • DRY gallery columns
  • Clean up trailing whitespace
  • Navigation - menu ancestor fix
  • Responsive method for _s
  • Remove deprecated constant HEADER_TEXTCOLOR
  • Adding License
  • Add end comment
  • Automattic url http to https
  • Fix typo
  • Translation fix for a comment string
  • Update Normalize site link
  • Make the `content.php` more flexible
  • Inconsistent Markup on search page
  • Adding support for .current-page-ancestor
  • Adding support for .current-page-ancestor
  • Enqueue Font Awesome for use
  • Fix translatability of comments title.
  • Minor automated testing tweaks.
  • Unify widget title classes
  • Remove period from file header
  • Remove period from file header
  • Remove Button Shadow Styling
  • Simplification of the _s_categorized_blog() return
  • Add missing singular placeholder in comments.php
  • Remove invalid rel="designer" attribute
  • Change primary menu idea to menu-1
  • Allow for content-{post_type}.php template files in single.php
  • Fix typo and update link
  • _s_pingback_header should use get_bloginfo
  • Update .site-title styles instead of anchor in customizer script
  • Simplify _s_categorized_blog function
  • Security update: Remove automated Version numbers on scripts and styles
  • Add word-wrap: normal to screen-reader text class.
  • Fix skip link focus for IE11
  • Remove aria-haspopup
  • Remove link around header image
  • Add theme support for selective refresh for widgets.
  • Matching style.css
  • Prevent broken translations in some locales for the edit post link
  • Add schema microdata
  • Add selective refresh for site title and description.
  • Remove body class "hfeed" from 404 template
  • Add license and update Normalize site link to sass file.
  • Update header.php
  • I18n and code layout
  • I18n: Fix a translation call for a text string which needs context
  • Code obfuscation: Fix assignment within a condition
  • Update readme.txt
  • doctype uppercase to lowercase
  • Update _menus.scss
  • Clarify who maintains _s
  • SASS to Match style.css
  • Allow category display in post preview even when only one category
  • Some minor updates
  • Added AJAX post loading, setting color link, setting logo, page rating
  • Adding ID to comment labels for post
  • Fix latest phpcs update
  • Refactor _S to modern CSS layout standards using grid and flex
  • Update comments.php
  • Use CSS grid for gallery styles
  • Add woocommerce to docs
  • Remove aria-hidden='true' from a tabbable item in the featured image
  • Prevent variables comments showing in the production file
  • Structure SASS folder with ITCSS
  • Structure SASS folder
  • Fixing localization function inside `printf()`
  • Clarify "singularly identifiable articles"
  • Make comments number comparison work as expected
  • Split _s_posted_on into two functions
  • Remove duplicate comments
  • Re-add `banner` and `contentinfo` roles to header and footer elements.
  • WIP: Enable coding standards for JS files
  • WPCS: Update the custom PHPCS ruleset for the release of WPCS 0.12.0
  • no-sidebar class
  • Format SCSS
  • Add "Next/Previous" text to single-post navigation
  • CSS: Add package.json for linting and compiling
  • Move PHP tags on itโ€™s own line & correct indention for WPCS 0.12.0
  • Update Normalize.css to v7.0.0
  • Support RTL the right way
  • Changed get_template_directory_uri function with get_theme_file_uri
  • Add editor-style.css to educate themers
  • Add 'tabindex=-1' to the featured image markup, to improve accessibilโ€ฆ
  • Fix an issue with input[type='search'] styling
  • Replace http with https in header.php
  • Wrap theme functions inside function_exists() check
  • Add woocommerce to docs
_s questions on Stackoverflow (View All Questions)
  • What's the best way to add jQuery to Underscores (_s) WordPress theme?
  • PHP irregular characters: ๏ฟฝ๏ฟฝ๏ฟฝหŒ_s
  • Microsoft _s functions, are they part of the C++ standard now?
  • Trouble centering Wordpress header elements with _s starter theme
  • Adding custom css to default style.css (Underscores _S Wordpress theme)?
  • Underscores _s the_posts_navigation WordPress doesn't update text
  • CSS transition dropdown menu on hover - absolute positioning left (_s wordpress theme)
  • Show WordPress Primary Menu in Zurb Foundation header [_s theme ]
  • How to display comments on homepage when using Underscores (_s) Wordpress theme?
  • Displaying facebook album covers photo _n instead of _s
  • Compiling codes with *_s in Visual C++ 6.0
  • Automatically rename _s theme (batch search & replace text)
  • Regex returning <_s instead of decimal value
_s list of languages used
Other projects in CSS