Jekyll File Structure

Episode #23 - May 21, 2016 - 4 minutes


Subscribe to Jekyll Casts

A basic Jekyll site has a file structure something like this:

Jekyll File Structure

In this tutorial we’ll take a high-level look at what these directories mean. Don’t stress if you don’t pick up these concepts now, we’ll go over these topics in-depth in later tutorials.


Holds the configuration for your Jekyll site. This is commonly used to:

  • Set variables which are used over our site
  • Configure Collections or defaults
  • Specify runtime variables we want to run every time.


All our unpublished blog posts. This allows us to work on blog posts without publishing them to the live site.


Code snippets which can be included throughout our site. Includes are often used for page sections which are duplicated across the site like a newsletter subscribe form.


Templates which wrap around our content. All the repeating code on our site like the header, footer and navigation are typically in a layout.


Contains our blog posts usually written in Markdown.


_data contains YAML, JSON and CSV files. The data in these files can be used throughout the Jekyll site.


Once Jekyll has built our site it puts the entire static site including all our assets in _site.


This file is used by Jekyll’s incremental build feature to keep track of the files which have changed.

Other Files/Folders

Files with front matter are processed and output to _site on a build. Files without front matter (typically CSS, JavaScript and image files) are copied straight to _site on a build.


Subscribe to Jekyll Casts