When to add a screenshot
Screenshots make articles more visually scannable and help readers locate UI elements. However, they increase page load time, require ongoing maintenance, and can be confusing when captured at different zoom levels than the reader is using. Add a screenshot only when a UI element is genuinely difficult to find:Add a screenshot when...
- The element is small or visually subtle (for example, a small edit button with no visible label).
- The element is not immediately visible—for example, it is inside a dropdown menu.
- The interface has multiple competing choices that could cause confusion (for example, three different elements that could all be interpreted as “Settings”).
Do not add a screenshot when...
- Text instructions alone make the step clear.
- The UI element is visually prominent through size, color, and placement.
- You are showing a command or its output—use a code block instead.
- The interface shows only simple options like a single checkbox.
Screenshot technical requirements
| Requirement | Specification |
|---|---|
| File format | PNG only. No GIFs. |
| Resolution | 144 dpi |
| Width | 750–1000 pixels for full-column images |
| File size | 250 KB or less |
| Naming | Kebab-case, descriptive: data-pack-purchase-button.png |
| macOS captures | Must be retina images |
Screenshot visual style
- Show just enough surrounding context to help readers find the element on screen.
- Resize your browser window to reduce negative space.
- Use light theme whenever possible.
- For GitHub: select “Light default” in your appearance settings.
- For VS Code: select “GitHub light default” from the GitHub Theme extension.
- If your username and avatar appear, replace them with
@octocat’s username and avatar (https://avatars.githubusercontent.com/u/583231?v=4) using browser developer tools. - Do not include a cursor in the screenshot.
Showing dropdown menus
- If your goal is to show the reader where the menu is, show the menu closed.
- If your goal is to help the reader distinguish between options inside the menu, show the menu open and without focus (no cursor or hover state).
Highlighting elements
To draw attention to a specific UI element, use the GitHub Docs Snagit theme to apply a dark orange contrasting stroke around the element.- Color:
fg.severefrom the Primer Design System (HEX#BC4C00, RGB188, 76, 0) - Corner rounding: 4 px
- Spacing: gap between UI element and stroke should be approximately equal to the stroke width
Download the Snagit theme
Navigate to
snagit-theme-github-docs.snagtheme in the github/docs repository and download it.Import into Snagit
Open Snagit, select the Shape tool, then select Import under “Quick styles” and choose the downloaded theme file.
Apply the highlight
Open a screenshot in Snagit, select the dark orange rectangle from the Shapes sidebar, and drag across the UI element you want to highlight. Adjust the size by dragging edges.
Alt text
Every image must have alt text. Alt text is read by screen readers and appears when an image fails to load. Rules for alt text:- Express the core idea or meaning of the image, not a literal description.
- Use 40–150 characters.
- End with a punctuation mark (usually a period).
- Do not start with “Image…” or “Graphic…”—screen readers announce this automatically.
- Begin with the type of graphic: “Screenshot of…” or “Diagram that shows…”
- Put multi-word UI element names in double quotation marks inside the alt text.
- Describe any visual highlighting: “…is outlined in dark orange.”
Screenshot of theExamples:Product name+UI elementshown. TheUI element+state of element/controls, and itskeyboard shortcut XYZ, are outlined in dark orange.
Image file names
Use descriptive names that include the feature name, action, and UI element. Mirror product language. Use kebab-case. Do not use Liquid conditionals in file names.| Use | Avoid |
|---|---|
data-pack-purchase-button.png | purchase_button.png |
actions-workflow-run-status.png | screenshot1.png |
Image storage
Images live in the/assets/images/ directory. The directory structure organizes images by product version.
| Directory | Usage |
|---|---|
/assets/images/ | Images not specific to any enterprise product |
/assets/images/enterprise/enterprise-server/ | Images for all GHES releases, or current and future releases |
/assets/images/enterprise/3.10/ | Images that apply to GHES 3.10 and earlier only |
/assets and include the full path with file extension:
Versioning images
When an image is the same across all GitHub plans, no versioning is needed. When it differs by plan or GHES release, use Liquid conditionals.Versioning by plan
Versioning by GHES release
If an image changes in GHES 3.10, move the existing image to/assets/images/enterprise/3.10/ and place the new image at the original path. Then add a Liquid conditional:
/assets/images/enterprise/.
Videos
Videos are used rarely in GitHub Docs. When included, they supplement written text—they never replace it. Videos must be owned by GitHub and must be well-produced.When to use a video
The Docs team does not create or maintain video content. Videos are purely supplemental and are not a content type owned by the Docs team.
- Is the video the only effective way to communicate the information?
- Does GitHub own the video?
- Is the video well produced (professional narration, clear visuals, trusted source)?
- Is it accessible to the broadest group of users?
- Is it less than five minutes long?
- Does it have a specific audience and purpose?
Video types
| Type | Purpose | Max length | Placement |
|---|---|---|---|
| Product overview | Show what the product does and get people interested | Under 1 minute | Landing pages, guides |
| Feature video | Supplement conceptual or procedural content | 5 minutes | Guides, conceptual articles, procedural articles |
| Tutorial | Help novice users get started; explain complex workflows | 5 min per video, 15 min total for a series | Guides |
Accessibility requirements
A video cannot be added to GitHub Docs unless it meets all of these requirements:- No flashing or strobe effects
- Closed captions (human-generated or proofread auto-captions)
- No graphics overlapping where captions appear
- Legible typography
- Sufficient contrast on any overlays
- Text on screen long enough to be read twice before it disappears
- A proofread descriptive transcript (scene-by-scene description of audio and visual content)
- Videos do not autoplay
Video hosting
Videos must be hosted on a platform GitHub owns and controls. Currently, GitHub’s videos are hosted on YouTube. Embed videos using YouTube’s Privacy Enhanced Mode by replacing the domain:Adding video frontmatter
For landing pages with an embedded video, add these properties to the YAML frontmatter:Transcripts
Every video linked or embedded in GitHub Docs must have a descriptive transcript. Transcripts are stored as articles incontent/video-transcripts/ with filenames like transcript-VIDEO-NAME.md.
Transcript frontmatter:
- All spoken words (do not paraphrase)
- Speaker identification when there are multiple speakers
- Descriptions of relevant visual elements and non-speech sounds in brackets:
[Background music plays.] End of transcript.at the end, followed by a link to the product landing page