Grav Review

What Is Grav? How Does It Work? Why is it a superior CMS Platform? How to use it to your advantage? Review of Grav CMS Platform.

Start Your Grav Website NOW! Get SiteGround Hosting. Only for 5.99 €/mo!

Grav Review image

Grav Review – Frequently Asked Questions

What Is Grav?

Grav is a CMS platform (file-based) that is one of a kind. It requires no installing, since all of its components are pre-installed and all it takes to set it up is to simply download it and extract an archive. This has you already running Grav. The CMS web-platform is created for none other than speed, meeting the requirements of most the latest Google search optimization criteria.

The name itself stands for a short version of Gravity. Its main idea here is that the different objects in Grav (themes, skeletons, plugins) combine as a symbiotic puzzle. But is this recipe of “gravity” really worth it and is it better than the competition? In this in-depth review, we have decided to help you understand how exactly the CMS works and what features do this innovative platform has to offer to you.

What Features Does Grav Have to Offer?

As most of the CMS platforms out there, Grav offers the best technology in the business. The main idea behind that is to create a platform that is easy-to-use and attractive in terms of web design. But it has another advantage – the user-friendly way of extending and modifying each theme. You can take out what you do not like on your site and add what you can find a use of.

The main features that the platform offers in terms of activity on a website and oversight by web publishers are several. Here is a detailed review of each and every one of those features:

Twig Templating

Twig Templating is to enable the user to have more powerful control over the UI (User interface). The main benefits of this technology or to be more specific – “Template Engine” are the following:

Twig is fast and it compiles templates down to plain optimized PHP code. Compared to regular PHP code, Twig offers optimized code that has reduced overhead to a minimum.

Twig is secure because it features a sandboxing mode that zones out the untrusted code from the template. This allows it to maintain speed by allowing users to modify the design with ease.

Twig is made to be a flexible tech, just like a Lego constructor. THe main benefit here is that Twig has a lexer and parser that are designed to allow devs to define which tags and filters to add and remove and create their own DSL.


Markdown is more of a language that is made with tech in mind. Its main idea is to be as lightweight as possible and since the project started back in 2004, its creators John Gruber and Aaron Swartz have done quite the progress.

Markdown has been created with the main idea to format readme types of files, online forum comments, and to create rich text using simple text editing software.

Markdown is a lightweight markup language with plain-text-formatting syntax, created in 2004 by John Gruber with Aaron Swartz. Markdown is often used to format readme files, for writing messages in online discussion forums, and to create rich text using a plain text editor.


Yet another feature that carries the word “simplicity” in mind is YAML data serialization language. Its primary purpose is to enable the users the following actions:

For the person to be able to easily read it.
To be able to port data between a variety of often used programming languages.
To match the native data structure of languages that are agile.
To have the type of model that supports generic tools.
To enable one-pass processing of information.
To be extensible and expressive.
To be easy to use and employ.

Given these goals, YAML has been maturing since it has been created, going through a lot of different variants. The latest versions of YAML support new types of languages, such as Javascript, Perl, Python, PHP, and Ruby.


Parsedown is a very interesting technology. What it does is it attempts to act just like a person would when reading Markdown. It looks at the lines of code and after this, it tries to determine how the lines begin. This immediately allows to understand what block of data is for what and this enables Parsedown to perform several different actions. The main one of those is to read and watch out for special types of characters and be able to detect what data is an “inline” element within the blocks.

This approach is also known as line-based approach. Parsedown is the first type of parser of its kind to be using that technology. As soon as it has been released, not only Grav, but many other CMS platforms have shown interest in Parsedown:

  • Laravel Framework
  • Bolt CMS
  • Herbie CMS
  • Kirby CMS
  • October CMS
  • Pico CMS
  • Statamic CMS
  • phpDocumentor
  • Symfony Demo

Doctrine Cache

As you might have gotten the idea by now, caching is crucial for the speed and optimization of the site. Given that most developers tend to be pushed to overoptimize websites, speed has become a vital element. Here is where Doctrine Cache comes in to rescue the day – it aims to boost performance.

Already in its 2nd stage, Doctrine is something that programmers know as ORM – object-relational mapper for PHP 7.1+. It aims to boost performance by using Data Mapper, aiming to separate your domain logic from the business persistence in a database management system that is relational.

To put it more simply, the main benefit of Doctrine is to focus on a logical process that is object-based. This means that it assumes that persistence is only a secondary issue. There are several benefits to this and one of them is something that the Doctrine team calls “Entities”. These “entities” are basically PHP objects that have unique identifiers, known as “primary key”. The main idea here is to detect the PHP objects faster, so that performance can be increased. The process of Doctrine 2 is configured in a way that it won’t clone or implement an object, unless its key is valid, making it close to errorless.

Pimple Dependency Injection Container

Created for maintenance and stability, the Pimple Dependency Injection Container is a technology that is very crucial to having a stable CMS platform. It uses, just one Class and one Line and it can manage both services as well as parameters. Pimple has the following capabilities:

Defining Services
Defining Parameters
Defining Shared Services
Protecting Parameters
Modifying services after creation
Fetching the service creation function
Packaging a Container for reusability

Symfony Event Dispatcher

Symfony Event Dispatcher is a plugin that has been created in order to be responsible for the handling of plugin events. The way it works is once a response object in a HttpKernel component (for example) has been created, it could be a plus to allow other elements to change headers and perform other modifications before the component is triggered. To allow this, the Symfony kernel introduces the kernel.response event. Its main goal is to perform the following actions:

The listener or a PHP object notifies the central dispatching object that it wants to listen to an event that is kernel.response.

The Symfony kernel tells the dispatcher component that it has to dispatch the event (kernel.response), passing it to an event object that has actual access to the Response object.

The dispatcher calls a method on (notifies) all of the listeners who want to tap into the kernel. response event, giving the ability to make mods to the Response object itself.

Symfony Console

The Symfony Console tech allows us to create different tasks via CLI (Command-Line Interface). These tasks include:

Command-line commands.
Recurring tasks.
Batch-based jobs.

Gregwar Image Library

What is a CMS platform without smart image manipulation, after all and Grav is no exception. Here is where the Gregwar Image Library plays a role. The Gregwar Image Library uses two main image optimization commands:

resize($width, $height, $background)
scaleResize($width, $height, $background)
forceResize($width, $height, $background)
cropResize($width, $height, $background)
zoomCrop($width, $height, $background, $xPos, $yPos)

And these are only the optimization components of the Gregwar Image Library. It has tons and tons of other image editing and processing tools that can crop, rotate and do whatever you please to perform when you want to traditionally edit an image.

What Are The Requirements to Run Grav on Your Server?

For a CMS platform that has been created with simplicity and speed in Mind, Grav also features the latest technologies. And so, one would traditionally assume that it has quite the requirements to run. But to be able to run, it not only comes preinstalled, but also does not have high requirements. In fact, what you need to install and run it on your website is two main requirements:

To have an Apache, Nginx, LiteSpeed, Lightly, IIS, and other web servers.
To have PHP 7.1.3 or higher version.

For Mac Users

Mac users are the ones who will really benefit from the platform because MacOS 10.14 Mojave already has PHP and comes with Apache web-server.

For Windows Users

Windows users are also not lagging far behind Mac users, because there are multiple ready packages that both include PHP and Apache’s newer versions, plus a lot of extra free tweaks:

Linux Requirements

Luckily, Linux users have nothing to worry about, because the OS comes built-in with most of the latest technologies that include both Apache and PHP.

What Grav Themes Choice Do You Have?

One thing is for certain – if you are using Grav, then there will not be a shortage of themes available. In fact, it aims to make sure that there are all of the possible theme stypes and types that will fit every need whether it is a small portfolio blog or a big news website. We have made reviews of them, so here are some of the most desirable themes for Grav:

  • Hypertext
  • If you are focused on speed, you can also check out the Top 5 fastest themes for Grav.

    In addition to this, there are hundreds of more themes for the CMS among which you can choose. And given the technology and modifiability, it has to offer, these themes can be changed, remodified and remodeled. It even offers the ability to fo you to create your own custom theme.

    What Grav Plugins Choice Do You Have?

    With Grav, you will get all the necessary plugins to enrich your website. Whether it is tools that are related to the performance, SEO boosting or tools that will ad social buttons to your site, it has them all.

    grav review plugins image

    The most often downloaded plugins for Grav by users appear to be:

    • Zooming.
    • YouTube.
    • Yandex Metrica.
    • Yandex Map.
    • October CMS
    • Word Count.
    • World Map.
    • Sitemap.
    • Widget.

    For the full list of 360 + plugins, you can check at Grav’s website. They also offer descriptions and demo for each of the plugins.

    What do People Think About Grav (User Opinions)?

    Generally, users are satisfied by Grav. Here are some opinions we managed to gather from multiple sources and forums, like Reddit and others:

    6 points
    2 years ago
    I’ve experimented a bit with the platform in the past, but I never really liked it and I did find it a bit messy. Installing it is very simple and easy, so deployment should be no issue, as it doesn’t use a dedicated MySQL database or such. The only way really to decide if it’s good for your particular use case is to test it out really.

    level 1
    2 points
    2 years ago
    I’ve been playing with Grav. I like to do all my writing in markdown and I’ve transported posts between different static and CMS bits in the past. Even with all markdowns, migration always requires a bit of work. For instance, I’m currently on WordPress and a git sync plugin. The “frontmatter” used in WordPress markdown/git sync is somewhat different than what Grav uses for frontmatter, which required me to write a script to get all the published dates correct. Despite that, just the fact that I can do this kind of migration is important.

    Another step I took a couple of years ago was to put my images into a static. sub-domain. This is so that if I ever redo my site (or someone reads my content from a GitHub markdown file), the URL to the image doesn’t change. This was not too tricky in WordPress, but I’m still not sure how to quite do this in Grav. However, Grav has this default concept of storing the page and all of its attachments in one folder. So if you have page1, with two images, you end up with page1/, page1/image1.png, page/image2.png. In some ways I like that approach better, making the links relative to the page. It still works with the “backed up in GitHub” approach for anything new, and all my legacy posts will still point to the static sub-domain.

    Looking over /u/CSecGuy ‘s suggestion of Bolt, it seems to take an idea of content types and fields. So to build a page, you would have a text field for title, a markdown field, and a date field. Everything looks really tied to the database (default is SQLite). I guess I would be concerned about getting my existing content into Bolt, and then extracting it in 1-5 years. But, I haven’t looked at Bolt enough – maybe there is a plugin that does the git content sync.

    2 points
    2 years ago
    I often use Grav for projects and consider it one of the best flat-file CMS.
    I made a list of good open-source CMS here if it can help you.


    1. Grav Home Page for learning on its plugins and themes.
    2. Wikipedia for understanding how the technology works.
    3. Reddit for understanding user opinions and problems with the CMS.

    Leave a Comment

    Your email address will not be published.

    This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.