The copy for GitLab is clear and direct. We strike a clear balance between professional and friendly. We can empathesize with users (such as celebrating completing all Todos), and remain respectful of the importance of the work. We are that trusted, friendly coworker that is helpful and understanding.

The copy and messaging is a core part of the experience of GitLab and the conversation with our users. Follow the below conventions throughout GitLab.

Portions of this page are inspired by work found in the Material Design guidelines.

Note: We are currently inconsistent with this guidance. Images below are created to illustrate the point. As this guidance is refined, we will ensure that our experiences align.



Users will skim content, rather than read text carefully. When familiar with a web app, users rely on muscle memory, and may read even less when moving quickly. A good experience should quickly orient a user, regardless of their experience, to the purpose of the current screen. This should happen without the user having to consciously read long strings of text. In general, text is burdensome and adds cognitive load. This is especially pronounced in a powerful productivity tool such as GitLab. We should not rely on words as a crutch to explain the purpose of a screen. The current navigation and composition of the elements on the screen should get the user 95% there, with the remaining 5% being specific elements such as text. This means that, as a rule, copy should be very short. A long message or label is a red flag hinting at design that needs improvement.

Example: Use Add instead of Add issue as a button label. Preferrably use context and placement of controls to make it obvious what clicking on them will do.

Capitalization and punctuation


Use sentence case for titles, headings, labels, menu items, and buttons. Use title case when referring to features or products. Note that some features are also objects (e.g. “Merge Requests” and “merge requests”).

:white_check_mark: Do :no_entry_sign: Don’t
Add issues to the Issue Board feature in GitLab Hosted Add Issues To The Issue Board Feature In GitLab Hosted

Avoid periods

Avoid using periods in solitary sentences in these elements:

  • Labels
  • Hover text
  • Bulleted lists
  • Dialog body text

Periods should be used for:

  • Lists or dialogs with multiple sentences
  • Any sentence followed by a link
:white_check_mark: Do place periods after sentences followed by a link :no_entry_sign: Don’t place periods after a link if it‘s not followed by a sentence
Mention someone to notify them. Learn more Mention someone to notify them. Learn more.
:white_check_mark: Do skip periods after solo sentences of body text :no_entry_sign: Don’t place periods after body text if there is only a single sentence
To see the available commands, enter /gitlab help To see the available commands, enter /gitlab help.

Use contractions

Don’t make a sentence harder to understand just to follow this rule. For example, “do not” can give more emphasis than “don’t” when needed.

:white_check_mark: Do :no_entry_sign: Don’t
it’s, can’t, wouldn’t, you’re, you’ve, haven’t, don’t it is, cannot, would not, it’ll, should’ve

Use numerals for numbers

Use “1, 2, 3” instead of “one, two, three” for numbers. One exception is when mixing uses of numbers, such as “Enter two 3s.”

:white_check_mark: Do :no_entry_sign: Don’t
3 new commits Three new commits


Omit punctuation after phrases and labels to create a cleaner and more readable interface. Use punctuation to add clarity or be grammatically correct.

Punctuation mark Copy and paste HTML entity Unicode Mac shortcut Windows shortcut Description
Period . Omit for single sentences in affordances like labels, hover text, bulleted lists, and dialog body text.

Use in lists or dialogs with multiple sentences, and any sentence followed by a link or inline code.

Place inside quotation marks unless you’re telling the reader what to enter and it’s ambiguous whether to include the period.
Comma , Place inside quotation marks.

Use a serial comma in lists of three or more terms.
Exclamation point ! Avoid exclamation points as they tend to come across as shouting. Some exceptions include greetings or congratulatory messages.
Colon : : \u003A Omit from labels, for example, in the labels for fields in a form.
Apostrophe ’ \u2019 ⌥ Option+⇧ Shift+] Alt+0 1 4 6 Use for contractions (I’m, you’re, ’89) and to show possession.

To show possession, add an ’s to all single nouns and names, even if they already end in an s: “Your issues’s status was changed.” For singular proper names ending in s, use only an apostrophe: “James’ commits.” For plurals of a single letter, add an ’s: “Dot your i’s and cross your t’s.”

Omit for decades or acronyms: “the 1990s”, “MRs.”
Quotation marks







⌥ Option+[

⌥ Option+⇧ Shift+[

⌥ Option+]

⌥ Option+⇧ Shift+]
Alt+0 1 4 7

Alt+0 1 4 8

Alt+0 1 4 5

Alt+0 1 4 6
Use proper quotation marks (also known as smart quotes, curly quotes, or typographer’s quotes) for quotes. Single quotation marks are used for quotes inside of quotes.

The right single quotation mark symbol is also used for apostrophes.

Don’t use primes, straight quotes, or free-standing accents for quotation marks.



Alt+8 2 4 2

Alt+8 2 4 3
Use prime (′) only in abbreviations for feet, arcminutes, and minutes: 3° 15′

Use double-prime (″) only in abbreviations for inches, arcseconds, and seconds: 3° 15′ 35″

Don’t use quotation marks, straight quotes, or free-standing accents for primes.
Straight quotes and accents "









Don’t use straight quotes or free-standing accents for primes or quotation marks.

Proper typography never uses straight quotes. They are left over from the age of typewriters and their only modern use is for code.
Ellipsis … ⌥ Option+; Alt+0 1 3 3 Use to indicate an action in progress (“Downloading…”) or incomplete or truncated text. No space before the ellipsis.

Omit from menu items or buttons that open a dialog or start some other process.
Chevrons «














Omit from links or buttons that open another page or move to the next or previous step in a process. Also known as angle brackets, angular quote brackets, or guillemets.
Em dash &mdash; \u2014 ⌥ Option+⇧ Shift+- Alt+0 1 5 1 Avoid using dashes to separate text. If you must use dashes for this purpose — like this — use an em dash surrounded by spaces.
En dash &ndash; \u2013 ⌥ Option+- Alt+0 1 5 0 Use an en dash without spaces instead of a hyphen to indicate a range of values, such as numbers, times, and dates: “3–5 kg”, “8:00 AM–12:30 PM”, “10–17 Jan”
Hyphen - Use to represent negative numbers, or to avoid ambiguity in adjective-noun or noun-participle pairs. Example: “anti-inflammatory”; “5-mile walk.”

Omit in commonly understood terms and adverbs that end in ly: “frontend”, “greatly improved performance.”

Omit in the term “open source.”
Parentheses ( ) Use only to define acronyms or jargon: “Secure web connections are based on a technology called SSL (the secure sockets layer).”

Avoid other uses and instead rewrite the text, or use dashes or commas to set off the information. If parentheses are required: If the parenthetical is a complete, independent sentence, place the period inside the parentheses; if not, the period goes outside.

When using the Alt keystrokes in Windows, use the numeric keypad, not the row of numbers above the alphabet, and be sure Num Lock is turned on.


Only use the terms in the tables below.


Adjectives (states)


Example: Use 5 open issues and don’t use 5 pending issues.

Verbs (actions)

Term Use Don’t
Add Add an issue Don’t use create or new
View View an open or closed issue
Edit Edit an open or closed issue Don’t use update
Close Close an open issue
Re-open Re-open a closed issue There should never be a need to use open as a verb
Delete Delete an open or closed issue

Add issue

When viewing a list of issues, there is a button that is labeled Add. Given the context in the example, it is clearly referring to issues. If the context were not clear enough, the label could be Add issue. Clicking the button will bring you to the Add issue form. Other add flows should be similar.

Add issue button

The form should be titled Add issue. The submit button should be labeled Submit. Don’t use Add, Create, New, or Save changes. The cancel button should be labeled Cancel. Don’t use Back.

Add issue form

Edit issue

When in context of an issue, the affordance to edit it is labeled Edit. If the context is not clear enough, Edit issue could be considered. Other edit flows should be similar.

Edit issue button

The form should be titled Edit issue. The submit button should be labeled Save. Don’t use Edit, Update, Submit, or Save changes. The cancel button should be labeled Cancel. Don’t use Back.

Edit issue form

Merge requests

Adjectives (states)


Verbs (actions)

Term Use Don’t
Add Add a merge request Do not use create or new
View View an open or merged merge request
Edit Edit an open or merged merge request Do not use update
Approve Approve an open merge request
Remove approval, unapproved Remove approval of an open merge request Do not use unapprove as that is not an English word
Merge Merge an open merge request

Comments & Discussions


A comment is a written piece of text that users of GitLab can create. Comments have the meta data of author and timestamp. Comments can be added in a variety of contexts, such as issues, merge requests, and discussions.


A discussion is a group of 1 or more comments. A discussion can include subdiscussions. Some discussions have the special capability of being able to be resolved. Both the comments in the discussion and the discussion itself can be resolved.

Portions of this page are modifications based on work created and shared by the Android Open Source Project and used according to terms described in the Creative Commons 2.5 Attribution License.