This guide defines standards for writing documentation on docs.getdbt.com. Follow these rules to ensure clarity, consistency, and accessibility.
For questions not covered here, refer to the Microsoft Writing Style Guide and the Chicago Manual of Style.
| Category | Rule |
|---|---|
| Voice | Use active voice |
| Tense | Use present tense |
| Person | Use second person ("you") |
| Capitalization | Use sentence case for titles and headings |
| Lists | Use parallel structure; no ending punctuation unless complete sentences |
| Code | Use backticks for inline code, code blocks for multi-line |
| Links | Use relative paths; descriptive link text |
- Naming conventions and branding
- File and folder structure
- Markdown syntax
- Text formatting
- UI elements
- Capitalization
- Titles and headings
- Lists
- Tables
- Cards
- Code formatting
- Links
- Images
- Word choice and terminology
- Callouts
Always use these exact names (case-sensitive):
| Product | Usage | Notes |
|---|---|---|
| dbt Labs | The company | Always lowercase "dbt", capital "L" |
| dbt | Generic reference | Use when content applies to all dbt offerings |
| dbt Core | Versions ≤1.x | Lowercase "dbt", capital "C" |
| dbt Fusion engine | Versions ≥2.x | Can shorten to "Fusion" in docs |
| dbt | Cloud-based offering | Formerly "dbt Cloud"; use "managed dbt" or "dbt platform" for clarity |
Plan tiers (capitalize): Developer, Starter, Enterprise, Enterprise+
Capitalize these product names:
- Studio IDE
- Canvas
- Insights
- Catalog
- dbt Mesh
- Orchestrator
- Semantic Layer
- Copilot
- dbt MCP server
- dbt Agents
Do not capitalize these features:
- dbt platform
- models
- environments
- configs
- settings
- column-level lineage
We have many official and unofficial partners in the world of dbt and we must respect their branding. Use official branding. Update when vendors rebrand.
| ❌ Avoid | ✅ Use |
|---|---|
| Microsoft Azure Active Directory | Microsoft Entra ID |
| VScode | VS Code |
| Visual Studio Code | VS Code (acceptable shorthand) |
Use all caps unless another standard exists (such as in code blocks):
| ❌ Avoid | ✅ Use |
|---|---|
| yaml | YAML |
| sql | SQL |
| json | JSON |
| DBT | dbt |
Exception: File extensions use lowercase (.sql, .yml) or inside code blocks (```yaml)
- Use lowercase with hyphens (
kebab-case) - Keep names short. They appear in the URL
- Be descriptive but concise
- Avoid redundant words:
| ❌ Redundant (avoid) | ✅ Prefer |
|----------------------|-----------|
|
users_model.sql|users.sqloruser_orders.sql| |macros_utils.sql|utils.sql| |schema_schema.yml|schema.yml|
| ❌ Avoid | ✅ Use |
|---|---|
/docs/deploy/how-we-think-about-architecture |
/docs/cloud/about-cloud/architecture |
getting-started-with-dbt-setup.md |
dbt-setup.md |
- Edit
sidebar.jsonly when adding or removing pages - The left sidebar (leftbar) is defined in
sidebar.js - The right sidebar (page TOC) generates automatically from H2 (##) and H3 (###) headings
- Expect merge conflicts in
sidebar.js. Review carefully and accept other contributors' changes - Ensure content is placed into proper directory (/docs, /guides, /reference, etc.)
- Keep sidebar ordering consistent with the existing content hierarchy
| Element | Syntax |
|---|---|
| External link | [Title](https://www.example.com) |
| Internal link | [Title](/docs/folder/file-name) |
| Anchor link (same page) | [Title](#section-name) |
| Relative link (other page) | [Title](/docs/folder/file-name#section-name) |
Valid path prefixes:
/docs//guides//reference//community/
Do not include file extensions (like .md) in internal links.
We use the Lightbox feature for image posting. Use the following syntax for posting images (width optional. Use it to resize large images):
<Lightbox src="/img/docs/image-name.jpg" width=60% title="Concise description"/>| Format | Use for | Example |
|---|---|---|
| Italics | Emphasis | Do not leave belongings on the bus. |
| Bold | UI elements, titles, headers | Click Submit. |
Code |
Code, paths, filenames, commands, parameters | Update dbt_project.yml |
Use code font for:
- Source code (SQL, YAML, JavaScript)
- Placeholder text
- Directory paths (
/opt/homebrew/bin/) - Directory names (the
etcdirectory) - Filenames (
dbt_project.yml) - Git branch names (
main) - Commands (
ghe-cluster-status) - Arguments, parameters, keys
- Adapter names (
dbt-snowflake)
Do not:
- Combine multiple text decorations
- Use inline links within command names (❌ Use
dbt runto build your models.
| Element | Verb | Example |
|---|---|---|
| Button | Click | Click Submit. |
| Checkbox | Select / Clear | Select the New option. |
| Dropdown | Select / Choose | In Create, select From a template. |
| Radio button | Select / Choose / Clear | Choose Small size. |
| Text field | Enter | In Address, enter your company's address. |
Avoid: "Click the button", "Check/Uncheck", "Hit", "Tap"
Use positional terms: upper, lower, center, left, right
✅ Use the search box in the upper left corner.
✅ Access guides from the Guides menu at the top of the page.
Bold section names. Avoid "panel" and "pane."
✅ In the Settings section, choose the default address.
❌ Review orders from the History pane.
- Use sentence case for titles and headings
- Capitalize product names (see product list)
- Capitalize acronyms and proper nouns
- Do not capitalize common features
- Use sentence case
- Be descriptive and action-oriented
- Keep concise
- Match the content type (see content types)
| Type | Use when |
|---|---|
| Bulleted (unordered) | Items can appear in any order |
| Numbered (ordered) | Steps must follow a sequence |
- Include at least two items
- Use parallel grammatical structure
- Start each item with a capital letter
- Do not end items with commas, semicolons, or conjunctions
- Use periods only for complete sentences
- Introduce with a heading or complete sentence/fragment followed by a colon
Bulleted list:
A dbt project must contain at minimum:
- Models: Single
.sqlfiles containingselectstatements- A project file:
dbt_project.ymlthat configures your project
Numbered list:
- Navigate to the Develop interface.
- Click + create new branch and enter
add-customers-model.
- Introduce with a heading or sentence/fragment followed by a colon
- Use a header row
- Use sentence case for all content
- Keep content concise
- Content becomes hard to read
- Cells require excessive text
- Mobile display suffers
- The content is step-by-step
- There are only one or two items
- It isn’t meant for side-by-side comparison
- A list or headings would be clearer Alternative formats: Definition lists, separate subsections, tabs, separate pages.
Use the <Card component to display content and actions on a single topic. These are primarily used on landing pages that link out to multiple related subjects.
| Class | Columns | Use case |
|---|---|---|
grid--2-col |
2 | Default choice |
grid--3-col |
3 | Common use |
grid--4-col |
4 | Limited text only (≤15 words) |
grid--5-col |
5 | Limited text only (≤15 words) |
For 4-5 columns: Set hide_table_of_contents: true in the frontmatter to hide the right table of contents and prevent crowding.
<div className="grid--3-col">
<Card
title="Studio IDE"
body="The IDE is the easiest way to develop dbt models."
link="/docs/cloud/studio-ide/develop-in-studio"
icon="pencil-paper"/>
<Card
title="Another feature"
body="Description with <a href='https://example.com'>inline link</a>"
icon="pencil-paper"/>
</div>| Prop | Required | Description |
|---|---|---|
title |
Yes | Clear, action-oriented title |
body |
Yes | Actionable or informative text; supports <a href> |
link |
No | Makes entire card clickable; overrides body links |
icon |
No | Icon from /website/static/img/icons/ |
- Keep lines under 60 characters
- Place explanatory text before the code block
- Specify the language for syntax highlighting
- Show context from the larger file
Common language tags: yaml, sql, shell, python, javascript
- Avoid markup inside command output
- Only use
$prefix when showing command output in the same block
✅ Good:
name: my_dbt_project
version: 1.0.0
config-version: 2
vars:
start_date: '2021-06-01'❌ Avoid (missing context):
config-version: 2
vars:
start_date: '2021-06-01'Use SCREAMING_SNAKE_CASE for values users must replace:
my-redshift-db:
target: dev
outputs:
dev:
type: redshift
cluster_id: CLUSTER_IDExplain placeholders in the preceding paragraph. For example, you'd explain CLUSTER_ID:
Replace CLUSTER_ID with the ID assigned to this cluster.
- Use relative paths from content root
- Do not include file extensions
- Do not use paths relative to the current document
Valid prefixes: /docs/, /guides/, /reference/, /community/
Example:
[Regions & IP Addresses](/docs/cloud/about-cloud/access-regions-ip-addresses)Section links:
[incremental models](/docs/build/incremental-models#understand-incremental-models)| ❌ Avoid | ✅ Use |
|---|---|
https://some.site.com |
Some site |
| Click here | dbt Labs docs |
| Visit our website | Read the setup guide |
Acceptable verbs: visit, read, refer to
- Sales or promotional material
- General landing pages
- Paywalled content
- Untrusted sites
- Personal sites or file shares
- Instant downloads
Every image must include descriptive alt text for screen readers.
- Save images to
/website/static/img/ - Use
kebab-caseorsnake_casefilenames - Use JPEG or PNG format
- Add icons to both
/img/icons/and/img/icons/white/
When to use screenshots:
- Highlighting navigation
- Showing on-screen elements
- Demonstrating product visuals
When not to use screenshots:
- Code inputs/outputs (use code blocks)
- Content that changes frequently
- Redact all PII (names, emails, phone numbers) and sensitive info (like account numbers, internal IDs, tokens, environment details)
- Exclude URL and bookmark bars
- Use generic names (John Doe, Jane Doe) in account fields
- Capture only the relevant area
- Crop to the relevant UI area only
- Use a consistent theme (default / light)
When highlighting UI elements:
- Use transparent boxes with red borders (medium line thickness)
- Place callouts near elements without covering details
- For multiple elements, use numbered callouts with a legend
Numbered callout format:
- Font: Helvetica, 30pt, Red, Bold
Use Google Material Icons for icon names.
✅ Click the menu icon
❌ Click the hamburger menu icon
| Rule | ✅ Use | ❌ Avoid |
|---|---|---|
| Active voice | Developers add files. | Files are added by developers. |
| Present tense | This command runs the job. | This command will run the job. |
| Second person | You can configure... | Users can configure... |
Use US English spelling:
| ❌ Avoid | ✅ Use |
|---|---|
| standardise | standardize |
| licence | license |
| colour | color |
- Spell out acronyms on first use (except in titles)
- Do not use an acronym that appears only once
- Format: Full phrase (ACRONYM)
Example: Integrated Development Environment (IDE)
Avoid Latin abbreviations. Use plain language:
| ❌ Avoid | ✅ Use |
|---|---|
| i.e. | that is |
| e.g. | for example, like |
| etc. | and more, and so forth |
| N.B. | note |
| via | using, through |
| ❌ Avoid | ✅ Use |
|---|---|
| CLI (alone) | dbt CLI or dbt Core |
| dbt CLI | dbt CLI (full name) |
| enter (in UI) | type |
| type (in command line) | enter |
| client, customer | person, human |
| organization | plan(s), account |
| hit, tap | press |
| soft limit | recommended limit |
| log in, login | sign in |
| signup | sign up |
| shell | terminal |
| login (noun) | username |
Avoid regional idioms. Write for a global audience.
❌ "Do the needful"
✅ "Complete the required steps"
Use callouts sparingly for important information. Overuse reduces impact.
| Type | Syntax | Use for |
|---|---|---|
| Note | :::note |
General notices |
| Info | :::info |
Highlighted information |
| Tip | :::tip |
Helpful suggestions |
| Caution | :::caution |
Warnings and considerations |
:::note Optional title
Callout content here.
:::- Keep content minimal
- Avoid general information, permissions, or prerequisites in callouts
- One key point per callout
Your feedback helps drive us forward. At dbt Labs, we want you to get involved if you see areas in the documentation that need improvement. That might include becoming a docs contributor or simply filing a GitHub issue so we know where to look. We have an incredible community of contributors, and our documents reflect that.
Your feedback improves these docs. To contribute:
- File a GitHub issue
- Submit a pull request
- Join the community discussions
This style guide evolves as we identify improvements. The dbt Labs technical writing team reviews all contributions.