Skip to content


Repository files navigation


Pencil is a powerful static documentation website generator that works on Markdown.

Version License

What can it do?

Pencil allows you to write content in Markdown, which has a very powerful and easy to learn markup syntax. You can quickly start creating your website without much code.

Pencil will automatically create the required files for your website, which are ready to be deployed to services like Netlify, GitHub Pages.


Static site generation

  • Minified files
  • SEO friendly
  • Integrate external files

Built-in markdown plugins

  • Table of contents
  • Anchored Headings
  • Code highlighting
  • Callouts
  • YouTube player embed
  • Emoji


  • Control theme color
  • Dark theme 🕶️
  • Custom plugins support

Quick start

Pencil site can be created quickly using the CLI tool. Make sure you have recent LTS version of Node.js installed. Follow the commands below:

npm install -g @penciljs/core
pencil init
# follow steps shown in CLI

Installing dependencies via npm install is not necessary if CLI is globally installed.


Following commands must be followed to setup Pencil development environment.

git clone
cd pencil
npm install
npm run dev

By default, the dev server opens at port 3000 with the playground. Playground is where you can test the code and make live changes to it.

Directory structure

Pencil follows the following directory structure,

  • src - Contains the source code.
    • core - Core modules that are used.
      • functions - Contains the code for the builder.
      • templates - Template files that define the structure, design and basic functionality of documentation website.
      • utils - Helper functions used extensively in functions.
  • playground - A sample documentation website setup to test Pencil features during development.
  • bin - Contains the scripts for the CLI.


Make sure you create a fork of this repository before you start contributing.

git clone <your-forked-repo>
cd <your-forked-repo>
npm install
npm run dev

git checkout -b some-fix
# make changes to the code

git commit -m "Your commit message"
git push origin some-fix

Use the playground to test your code. Do not commit changes made in the playground.

Once you are done with the changes, you can open a pull request to dev branch.


Pencil is MIT Licensed