A basic Jekyll site has a file structure similar to 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 global variables on the 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.


Page 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 content. All the repeating HTML on our site like the header, footer and navigation typically live 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.