# gatsby-starter-blog: A Markdown-to-Static Blog Template Built on Gatsby 5

> gatsby-starter-blog is an official Gatsby 5 project template that converts Markdown files into a static blog site with RSS feeds, syntax-highlighted code blocks, and a GraphQL data layer. It is licensed under 0BSD, meaning the license text itself is the only placeholder and can be replaced freely.

**gatsbyjs/gatsby-starter-blog** — Gatsby starter for creating a blog

- Repository: https://github.com/gatsbyjs/gatsby-starter-blog
- Website: https://gatsbystarterblogsource.gatsbyjs.io/
- Stars: 3,511 · Forks: 2,528
- Language: JavaScript
- License: 0BSD
- Published: 2026-09-23 · Updated: 2026-09-23 · Language: en
- Canonical page: https://hysenlabs.com/projects/gatsbyjs-gatsby-starter-blog

## What gatsby-starter-blog Sets Up and Who It Is For

This is an official template from the Gatsby organization, scaffolded with the Gatsby CLI. It produces a blog that reads posts from Markdown files in the content/ directory and builds a set of static HTML pages. The README describes it as shipping 'the main Gatsby configuration files you might need to get up and running.'

The audience is JavaScript developers who already know React and want a static blog without writing the data layer from scratch. The template handles three things that new Gatsby projects commonly require: reading Markdown from disk with gatsby-source-filesystem, converting it to HTML with gatsby-transformer-remark, and generating an RSS feed with gatsby-plugin-feed. Developers who are not familiar with React or GraphQL will find this starter harder to extend than a simpler generator, since all page templates are written in JSX and data is queried through GraphQL.

## Getting the Starter Running in Three Commands

The README gives a three-step quick start. First, create the site with the Gatsby CLI:

```shell
gatsby new my-blog-starter https://github.com/gatsbyjs/gatsby-starter-blog
```

This command clones the repository, installs dependencies, and sets up the project in a new directory. Then start the development server:

```shell
cd my-blog-starter/
gatsby develop
```

The site runs at http://localhost:8000. The README also notes a second address: http://localhost:8000/___graphql, which opens GraphiQL, Gatsby's browser-based GraphQL explorer. GraphiQL lets you inspect the data schema and test queries against the site's data before writing them into page components.

Live editing works during development: saving a change to src/pages/index.js updates the browser without a full restart. This hot-reload applies to JSX and CSS but not to gatsby-config.js or the Gatsby Node APIs, which require a server restart.

## The Four Gatsby Configuration Files and What Each Does

The starter exposes four Gatsby lifecycle files at the project root, which the README explains individually:

gatsby-config.js holds site metadata and plugin configuration. This is where you set the site title, description, and which gatsby-remark-* plugins process your Markdown.

gatsby-node.js runs during the build process. In a blog starter, this is typically where individual post pages are generated from the GraphQL layer.

gatsby-browser.js applies to the browser environment. It can import global CSS or wrap the application in a provider component.

gatsby-ssr.js applies to server-side rendering. It mirrors gatsby-browser.js for anything that needs to run during HTML generation.

Of these, gatsby-config.js and gatsby-node.js are the ones you will edit when customizing the blog. The starter includes working defaults in both.

## Markdown Processing, Code Highlighting, and the Plugin Stack

The package.json lists the plugins that turn Markdown files into blog posts. gatsby-transformer-remark parses Markdown and exposes it through GraphQL. gatsby-remark-prismjs adds syntax highlighting through PrismJS, so fenced code blocks in Markdown posts render with language-specific colors. gatsby-remark-images processes image references inside Markdown and applies responsive sizing. gatsby-remark-responsive-iframe wraps iframes for responsive layouts.

For typography, the starter loads two fonts through @fontsource: Merriweather for body text and Montserrat for headings. These are loaded as npm packages rather than external font CDN requests.

gatsby-plugin-feed generates an RSS feed. gatsby-plugin-image handles image optimization for images used in JSX components. gatsby-plugin-manifest sets metadata for the web app manifest.

The development tooling is minimal: only Prettier is included as a dev dependency. The package.json test script outputs 'Write tests!' and exits with code 1, so there is no testing infrastructure in the starter itself.

## Where gatsby-starter-blog Falls Short

The starter has no CMS integration. Adding or editing a post means creating or editing a Markdown file in the content/ folder and running a new build. There is no admin interface, no live preview from a CMS, and no webhook configuration for trigger-based deploys.

There is also no test setup. The package.json test command is a stub that fails immediately. Developers who want to test page rendering or GraphQL queries will need to add a testing library themselves, following the guidance linked in the test script (gatsby.dev/unit-testing).

The starter does not include MDX support. If you need React components inside Markdown posts, you must add gatsby-plugin-mdx and remove or adjust gatsby-transformer-remark manually.

For large sites with thousands of posts, build times scale with the number of pages Gatsby processes. Incremental builds are available in Gatsby Cloud but are not configured in the starter.

## Hugo as an Alternative and the 0BSD License

Hugo is a Go-based static site generator that also builds sites from Markdown. The key difference from gatsby-starter-blog is the runtime: Hugo requires only a single Go binary and no Node.js, and its build times are generally faster for large post archives because it does not run a JavaScript bundler. gatsby-starter-blog uses React for templates, which is an advantage for teams already writing React elsewhere, and its plugin system allows importing npm packages directly into the build process.

The starter's license is 0BSD, which the README describes as essentially a placeholder: 'You can see this file as a placeholder and replace it with your own license.' This means there are no attribution requirements on code derived from this template.

The last push was on 2026-05-11. The package.json shows Gatsby 5.14.6 and React 18.1.0.

## Conclusion

React developers who want a static Markdown blog with a known, maintained starting point and a documented Netlify deployment path will find this starter practical. Developers who need dynamic content, server-side rendering for authenticated pages, or a visual CMS editor should look beyond this template. Before committing, verify that gatsby-transformer-remark processes your Markdown variant correctly, since the starter does not include options for MDX or custom remark plugins beyond what is in gatsby-config.js.

## FAQ

### What does gatsby-starter-blog install by default?

It installs Gatsby 5, React 18, gatsby-transformer-remark for Markdown processing, gatsby-remark-prismjs for syntax highlighting, gatsby-plugin-feed for RSS, gatsby-plugin-image for optimized images, and Merriweather and Montserrat fonts via @fontsource packages.

### Does gatsby-starter-blog support MDX?

The starter uses gatsby-transformer-remark, not MDX. The README does not mention MDX support, so adding it would require replacing or supplementing the transformer plugin manually.

### Can gatsby-starter-blog be deployed to Netlify?

Yes. The README offers a one-click deploy button for Netlify and describes Netlify as 'the fastest way to combine your favorite tools and APIs' for Gatsby sites. The build command is gatsby build, which produces a static site in the public/ directory.

## Sources

- [gatsbyjs/gatsby-starter-blog on GitHub](https://github.com/gatsbyjs/gatsby-starter-blog)
- [Issues](https://github.com/gatsbyjs/gatsby-starter-blog/issues)
- [License: 0BSD](https://github.com/gatsbyjs/gatsby-starter-blog/blob/master/LICENSE)
- [Project website](https://gatsbystarterblogsource.gatsbyjs.io/)
- [README](https://github.com/gatsbyjs/gatsby-starter-blog/blob/master/README.md)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/gatsbyjs-gatsby-starter-blog
