github-docs-arabic-enhanced / content /get-started /writing-on-github /working-with-advanced-formatting /creating-and-highlighting-code-blocks.md
| title: Creating and highlighting code blocks | |
| intro: Share samples of code with fenced code blocks and enabling syntax highlighting. | |
| product: '{% data reusables.gated-features.markdown-ui %}' | |
| redirect_from: | |
| - /articles/creating-and-highlighting-code-blocks | |
| - /github/writing-on-github/creating-and-highlighting-code-blocks | |
| - /github/writing-on-github/working-with-advanced-formatting/creating-and-highlighting-code-blocks | |
| versions: | |
| fpt: '*' | |
| ghes: '*' | |
| ghec: '*' | |
| shortTitle: Create code blocks | |
| ## Fenced code blocks | |
| You can create fenced code blocks by placing triple backticks <code>\`\`\`</code> before and after the code block. We recommend placing a blank line before and after code blocks to make the raw formatting easier to read. | |
| ````text | |
| ``` | |
| function test() { | |
| console.log("notice the blank line before this function?"); | |
| } | |
| ``` | |
| ```` | |
|  | |
| > [!TIP] | |
| > To preserve your formatting within a list, make sure to indent non-fenced code blocks by eight spaces. | |
| To display triple backticks in a fenced code block, wrap them inside quadruple backticks. | |
| `````text | |
| ```` | |
| ``` | |
| Look! You can see my backticks. | |
| ``` | |
| ```` | |
| ````` | |
|  | |
| {% data reusables.user-settings.enabling-fixed-width-fonts %} | |
| ## Syntax highlighting | |
| <!-- If you make changes to this feature, check whether any of the changes affect languages listed in /get-started/learning-about-github/github-language-support. If so, please update the language support article accordingly. --> | |
| You can add an optional language identifier to enable syntax highlighting in your fenced code block. | |
| Syntax highlighting changes the color and style of source code to make it easier to read. | |
| For example, to syntax highlight Ruby code: | |
| ````text | |
| ```ruby | |
| require 'redcarpet' | |
| markdown = Redcarpet.new("Hello World!") | |
| puts markdown.to_html | |
| ``` | |
| ```` | |
| This will display the code block with syntax highlighting: | |
|  | |
| > [!TIP] | |
| > When you create a fenced code block that you also want to have syntax highlighting on a GitHub Pages site, use lower-case language identifiers. For more information, see [AUTOTITLE](/pages/setting-up-a-github-pages-site-with-jekyll/about-github-pages-and-jekyll#syntax-highlighting). | |
| We use [Linguist](https://github.com/github-linguist/linguist) to perform language detection and to select [third-party grammars](https://github.com/github-linguist/linguist/blob/main/vendor/README.md) for syntax highlighting. You can find out which keywords are valid in [the languages YAML file](https://github.com/github-linguist/linguist/blob/main/lib/linguist/languages.yml). | |
| ## Creating diagrams | |
| You can also use code blocks to create diagrams in Markdown. GitHub supports Mermaid, GeoJSON, TopoJSON, and ASCII STL syntax. For more information, see [AUTOTITLE](/get-started/writing-on-github/working-with-advanced-formatting/creating-diagrams). | |
| ## Further reading | |
| * [{% data variables.product.prodname_dotcom %} Flavored Markdown Spec](https://github.github.com/gfm/) | |
| * [AUTOTITLE](/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax) | |