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


The Javascript Site Generator

Subscribe to updates I use cms.js

Statistics on cms.js

Number of watchers on Github 2023
Number of open issues 30
Average time to close an issue about 1 month
Main language JavaScript
Average time to merge a PR about 17 hours
Open pull requests 15+
Closed pull requests 8+
Last commit over 1 year ago
Repo Created over 3 years ago
Repo Last Updated over 1 year ago
Size 296 KB
Organization / Authorcdmedia
Latest Releasev1.0.0
Page Updated
Do you use cms.js? Leave a review!
View open issues (30)
View cms.js activity
View on github
Fresh, new opensource launches 🚀🚀🚀
Trendy new open source projects in your inbox! View examples

Subscribe to our mailing list

Evaluating cms.js for your project? Score Explanation
Commits Score (?)
Issues & PR Score (?)

CMS.js Logo


CMS.js is fully client-side, Javascript site generator in the spirit of Jekyll that uses plain ol' HTML, CSS and Javascript to generate your website. CMS.js is like a file-based CMS. It takes your content, renders Markdown and delivers a complete website in Single-Page App fashion...without the aid of server-side scripting (no Node.js, PHP, Ruby, etc.).

CMS.js Screenshot


Check out a working demo here

Quick Start

CMS.js currently supports two website modes, Github and Server.

Github Mode

This is the default mode for CMS.js. Host your website on Github using Github Pages, similar to Jekyll.

Server Mode

Use server mode if you choose to self host your content. Apache and NGINX servers are supported. If using server mode, make sure the server's directory indexing feature is enabled.

  • Apache - Make sure htaccess is enabled OR Options Indexes is set for your directory.
  • NGINX - Make sure autoindex on is set for your directory

More info on server setup is available on the wiki


  1. Clone the repo: git clone or download the latest release
  2. Configure js/config.js to your liking
  3. Make sure to set your githubUserSettings in js/config.js if using Github mode
  4. If using Github mode, create a new branch from your master or working branch called gh-pages (Github's default branch for hosting)
  5. Visit your site!

How it works

Github Mode

In Github mode, CMS.js uses the Github API to get the content of your gh-pages repo and serve them as a full website.

Server Mode

In Server mode, CMS.js takes advantage of the Server's Directory Indexing feature. By allowing indexes, CMS.js sends an AJAX call to your specified folders and looks for Markdown files. After they are found, it takes care of everything else and delivers a full website.

Migration from Jekyll

Importing Posts

Once CMS.js is installed and running, simply copy all of your posts from your Jekyll project's _post folder to your designated CMS.js posts folder.

Importing Pages

Copy all of your Markdown pages from your Jekyll projects root folder into your designated CMS.js pages folder.



All forms of contribution are welcome: bug reports, bug fixes, pull requests and simple suggestions. If you do wish to contribute, please follow the Airbnb Javascript Style Guide Thanks!

List of contributors

You can find the list of contributors here.

cms.js open issues Ask a question     (View All Issues)
  • almost 3 years Looking for collaborators...
  • almost 3 years setNavigation() is invoked before all pages are loaded
  • about 3 years Date in .md not file date
  • about 3 years Neocities
  • over 3 years Add SEO Friendly Tags
  • over 3 years Search for title or content
  • over 3 years Separate Template for posts on homepage and on post page
  • over 3 years CLI utility
  • over 3 years markdown and yaml front matter conflict
  • over 3 years Architect changes
  • over 3 years jQuery as a Dependency
  • over 3 years Fix for blog/static frontpage and posts listing
  • over 3 years pages and htaccess issue
  • over 3 years Workflow
  • over 3 years Render blocking question
  • over 3 years Option to support a page, a post, or the whole site to be right to left
  • over 3 years option for main page to list posts or show specific page
  • over 3 years Blank screen for no-loads
  • over 3 years Handle layout tag
  • over 3 years Add tags
  • over 3 years Add pagination
cms.js open pull requests (View All Pulls)
  • Regex fix and swtiched to UTC date methods
  • Architect changes relates #43
  • add some description to
  • Eliminate jQuery.
  • Type checking
  • Corrected a bug in date parser
  • test
  • Adding new template "post-full-template"
  • Post separator option and fix for #51
  • Parse seperator patch
  • TPL in pure javascript.
  • "Page as frontpage" feature implemented
  • Expanded filename's date sort functionality
  • Premature setNavigation() invocation fix (issue #65)
  • Update page title - SEO
cms.js list of languages used
Other projects in JavaScript