Want to take your software engineering career to the next level? Join the mailing list for career tips & advice Click here


Modern, Crazy Fast, Ridiculously Easy and Amazingly Powerful Flat-File CMS

Star full 4f7b624809470f25b6493d5a7b30d9b9cb905931146e785d67c86ef0c205a402Star full 4f7b624809470f25b6493d5a7b30d9b9cb905931146e785d67c86ef0c205a402Star full 4f7b624809470f25b6493d5a7b30d9b9cb905931146e785d67c86ef0c205a402Star full 4f7b624809470f25b6493d5a7b30d9b9cb905931146e785d67c86ef0c205a402Star full 4f7b624809470f25b6493d5a7b30d9b9cb905931146e785d67c86ef0c205a402 (1 ratings)
Rated 5.0 out of 5
Subscribe to updates I use grav

Statistics on grav

Number of watchers on Github 8627
Number of open issues 150
Average time to close an issue 4 days
Main language PHP
Average time to merge a PR 3 days
Open pull requests 47+
Closed pull requests 43+
Last commit over 2 years ago
Repo Created almost 6 years ago
Repo Last Updated over 2 years ago
Size 12.1 MB
Homepage https://getgrav.org
Organization / Authorgetgrav
Latest Release1.4.1
Page Updated
Do you use grav? Leave a review!
View open issues (150)
View grav activity
View on github
Fresh, new opensource launches 🚀🚀🚀
Software engineers: It's time to get promoted. Starting NOW! Subscribe to my mailing list and I will equip you with tools, tips and actionable advice to grow in your career.
Evaluating grav for your project? Score Explanation
Commits Score (?)
Issues & PR Score (?)


SensioLabsInsight Slack Build Status OpenCollective OpenCollective

Grav is a Fast, Simple, and Flexible, file-based Web-platform. There is Zero installation required. Just extract the ZIP archive, and you are already up and running. It follows similar principles to other flat-file CMS platforms, but has a different design philosophy than most. Grav comes with a powerful Package Management System to allow for simple installation and upgrading of plugins and themes, as well as simple updating of Grav itself.

The underlying architecture of Grav is designed to use well-established and best-in-class technologies to ensure that Grav is simple to use and easy to extend. Some of these key technologies include:



These are the options to get Grav:

Downloading a Grav Package

You can download a ready-built package from the Downloads page on https://getgrav.org

With Composer

You can create a new project with the latest stable Grav release with the following command:

$ composer create-project getgrav/grav ~/webroot/grav

From GitHub

  1. Clone the Grav repository from https://github.com/getgrav/grav to a folder in the webroot of your server, e.g. ~/webroot/grav. Launch a terminal or console and navigate to the webroot folder:

    $ cd ~/webroot
    $ git clone https://github.com/getgrav/grav.git
  2. Install the plugin and theme dependencies by using the Grav CLI application bin/grav:

    $ cd ~/webroot/grav
    $ bin/grav install

Check out the install procedures for more information.

Adding Functionality

You can download plugins or themes manually from the appropriate tab on the Downloads page on https://getgrav.org, but the preferred solution is to use the Grav Package Manager or GPM:

$ bin/gpm index

This will display all the available plugins and then you can install one or more with:

$ bin/gpm install <plugin/theme>


To update Grav you should use the Grav Package Manager or GPM:

$ bin/gpm selfupgrade

To update plugins and themes:

$ bin/gpm update


We appreciate any contribution to Grav, whether it is related to bugs, grammar, or simply a suggestion or improvement! Please refer to the Contributing guide for more guidance on this topic.

Security issues

If you discover a possible security issue related to Grav or one of its plugins, please email the core team at contact@getgrav.org and we'll address it as soon as possible.

Getting Started

Exploring More


Support Grav with a monthly donation to help us continue development. [Become a backer]


Become a sponsor and get your logo on our README on Github with a link to your site. [Become a sponsor]



Running Tests

First install the dev dependencies by running composer update from the Grav root. Then composer test will run the Unit Tests, which should be always executed successfully on any site.

You can also run a single unit test file, e.g. composer test tests/unit/Grav/Common/AssetsTest.php

grav open issues Ask a question     (View All Issues)
  • over 3 years Unable to perform case-insensitive ordering of a collection when the order is based on a custom header field.
  • over 3 years Webp image format enhancement
  • over 3 years Error occurs after Grav admin upgrade to 1.1.8 (images)
  • over 3 years Multi-language not working
  • over 3 years Life cycle confusion when processing twig in a page
  • over 3 years [Feature request] - Support other PHP-based template languages
  • over 3 years Plugins, shortcodes, and priorities
  • over 3 years Recommendation: Theme template standards
  • over 3 years Problem with using Grav site with subdomain
  • over 3 years Question on Javascript and CSS Optimizations
  • over 3 years Unable to filter page collections using taxonomy terms containing commas
  • over 3 years Exclude page structure from URL path
  • over 3 years Custom template for tag-archive
  • over 3 years Improve using Blueprints
  • over 3 years [add-resource] New Skeleton
  • over 3 years using new GRAV (behind a proxy): themes and plugins in admin plugin failed
  • over 3 years Problematic order of duplicate assets
  • almost 4 years codeblock (triple backticks) in nested items is commented out
  • almost 4 years Error after clearing cache
  • almost 4 years So....What happens when I attempt to load 30,000 pages into grav. Out of memory error?
  • almost 4 years Dump variables change position in debugbar
  • almost 4 years Problem with nested collections
  • almost 4 years Admin login broken when proxying Grav on alternative port
  • almost 4 years Pages Field in Blueprint: possible to restrict pages to children of a specific folder?
  • almost 4 years Filter by Taxonomy by using the OR function
  • almost 4 years [feature request] CLI access to individual pages
  • almost 4 years Feature request: Force JSON output regardless of URL extension
  • almost 4 years ImageMedium methods don't update width/height parameters
  • almost 4 years Feature suggestion: full control over image sizes with ImageMedium#derivatives
  • almost 4 years Adding subpages when "Hide home route in URLs" is enabled
grav open pull requests (View All Pulls)
  • WIP - Versions in dependencies
  • Reinitialize Grav on every test
  • Auto-adjust images orientation using EXIF data
  • Do not Merge - Developer CLI Tools
  • Allow authentication for proxy
  • Add ability to link to file on gist
  • This allows a frontmatter.yaml file to be included in a page folder
  • Added the ability to inline css and js code
  • Refactored the Grav classes load and process methods to follow clean coding standards
  • Update nginx.conf
  • bugfix: translation key couldn't contain dot
  • translate(): apply sprintf even if translation key missing in yaml
  • Docker + docker-compose
  • Respect `enable_asset_timestamp` settings for pipelined Assets
  • Cache images loaded from the route (when cache is enabled)
  • Force SSL on a page if system.force_ssl is enabled
  • Allow subfolder url rewrite
  • Feature: Better assets pipelining
  • Add user to config
  • better nginx config, renamed
  • feat(admin): add setting to split admin and front-end session
  • Added autoplay and hide controls methods
  • Adding 'system.errors.verbosity' to eventually replace 'system.errors.display'
  • DO NOT MERGE! Proof of concept. Still can't throw arbitrary error...
  • Proposal to add 'wordwrap' to list of built-in twig filters
  • ParsedownGravTrait `addBlockType` and `addInlineType` enhancements
  • ImageMedium#derivatives now works with image filters
  • Added ability to pass an array of explicit widths to ImageMedium#derivatives
  • Decode single taxonomy params
  • Add Chinese language.
  • Fix Page Collections problem with @page.modular
  • [WIP] Web Server Config URL Rewrite Rules White List
  • Add timestamp to configuration settings
  • Minor if-else tweaking
  • Make it possible to include debug bar also into non-HTML responses
  • Avoid to delete images/ folder after using GPM
  • [WIP] Test against PHP 7.2
  • Simplify returns
  • Remove the default type attribute from script tags
  • A new testing pull request
  • Update Assets.php
  • Precompression for (pipelined) assets (nginx::gzip_static support).
  • Fixed routing issues with multisite and multilanguage
  • Add pages.markdown.extra_escape_fences feature
  • Feature/hotfix markdown fences
  • Add function to dependency check
  • Feature/taxonomy filtering spaces
grav questions on Stackoverflow (View All Questions)
  • Deploying Grav CMS to Heroku
  • Unique page identifiers in Grav CMS
  • Grav, get pages by taxonomy - page.url not working
  • GRAV subnavigation
  • Global Content Block in Grav CMS
grav list of languages used
Other projects in PHP