Keyboard shortcuts, filters/labels, and inbox-management reference for Gmail.
| Category | Operator | Syntax | Example | What it does |
|---|---|---|---|---|
| People | from: | from:<sender> | from:jane@acme.com | Messages from a specific sender. Partial names work too — from:jane matches any sender whose name or address contains "jane". |
| People | to: | to:<recipient> | to:me | Messages sent to a recipient. to:me is a useful shorthand for mail addressed directly to you rather than a list. |
| People | cc: / bcc: | cc:<address> | cc:legal@acme.com | Matches the Cc or Bcc field specifically. Note: you can't find mail where you were Bcc'd — that header isn't delivered to you. |
| People | deliveredto: | deliveredto:<address> | deliveredto:alias@acme.com | Matches the actual delivery address in the headers — the way to find mail that arrived via a specific alias or forward. |
| People | list: | list:<list-id> | list:announcements.acme.com | Matches messages from a mailing list via the List-Id header. The cleanest way to filter a specific newsletter or group. |
| Content | subject: | subject:<words> | subject:(quarterly report) | Searches the subject line only. Parentheses group multiple words; quotes force an exact phrase. |
| Content | "exact phrase" | "<phrase>" | "annual performance review" | Forces an exact-phrase match instead of matching the words independently anywhere in the message. |
| Content | AROUND | <word> AROUND <n> <word> | budget AROUND 5 approval | Proximity search — the two words appear within N words of each other. Must be uppercase. Genuinely useful when you remember the gist but not the phrasing. |
| Content | OR / { } | A OR B · {A B} | {invoice receipt} | Matches either term. OR must be uppercase; curly braces are the shorthand equivalent. |
| Content | - (minus) | -<term> | invoice -paid | Excludes results containing the term. Stacks with any other operator: -from:noreply@. |
| Content | + (plus) | +<word> | +unsubscribe | Exact-match a single word, suppressing Gmail's automatic synonym/stemming expansion. |
| Content | rfc822msgid: | rfc822msgid:<id> | rfc822msgid:200503292@example.com | Finds one exact message by its Message-ID header. The precision tool for debugging mail delivery and tracing a specific message. |
| Attachments | has:attachment | has:attachment | from:finance has:attachment | Messages carrying any attachment (inline images count). |
| Attachments | filename: | filename:<name|ext> | filename:pdf | Matches attachment filename or extension. filename:contract.pdf targets one exact file. |
| Attachments | has:drive | has:drive | has:drive from:team | Messages containing a Google Drive link. Companions: has:document, has:spreadsheet, has:presentation. |
| Attachments | has:youtube | has:youtube | has:youtube newer_than:6m | Messages containing a YouTube video link. |
| Size | larger: / smaller: | larger:<n>M | larger:10M | Messages above/below a size. Accepts K and M suffixes. The core tool for reclaiming storage quota. |
| Size | size: | size:<bytes> | size:5000000 | Messages larger than an exact byte count — the raw-number version of larger:. |
| Date | after: / before: | after:YYYY/MM/DD | after:2026/01/01 before:2026/04/01 | Absolute date bounds. Pair them to isolate a quarter, a project window, or a specific incident. |
| Date | older_than: / newer_than: | older_than:<n><d|m|y> | older_than:1y | Relative age in days/months/years. Unlike before:, this stays correct over time — essential inside saved filters. |
| Date | older: / newer: | older:YYYY/MM/DD | older:2024/06/01 | Absolute-date variants that match by exact timestamp rather than by whole calendar day. |
| State | is:unread / is:read | is:unread | is:unread in:inbox | Filters by read state — the backbone of any triage workflow. |
| State | is:starred | is:starred | is:starred older_than:30d | Starred messages. The example surfaces things you starred and then quietly abandoned. |
| State | is:important | is:important | is:important is:unread | Matches Gmail's own ML importance marker (the yellow chevron), not your stars. |
| State | is:snoozed | is:snoozed | is:snoozed | Everything currently snoozed and scheduled to return — worth auditing occasionally so nothing hides forever. |
| State | is:muted | is:muted | is:muted | Threads you muted, which skip the inbox on every reply. The only practical way to find and unmute them later. |
| Location | in:inbox | in:inbox | in:inbox is:unread | Restricts to the inbox proper, excluding archived mail. |
| Location | in:anywhere | in:anywhere | in:anywhere from:recruiter | Includes Spam and Trash, which normal search deliberately excludes. Always the first thing to try when a message "doesn't exist". |
| Location | in:spam / in:trash | in:spam | in:spam from:acme.com | Targets one of those folders specifically — useful for confirming a false-positive spam classification. |
| Location | is:sent / is:draft | is:sent | is:sent to:client older_than:7d | Your outbound mail or unsent drafts. Pair with to: to audit what you're still waiting on a reply for. |
| Labels | label: | label:<name> | label:receipts | Messages with a label. Use hyphens for spaces (label:client-work) and a slash for nesting (label:work/urgent). |
| Labels | has:userlabels | has:userlabels | has:nouserlabels is:unread | Messages with (or, via has:nouserlabels, without) any label you created. Great for finding mail your filters never caught. |
| Labels | category: | category:<tab> | category:promotions older_than:6m | Targets an inbox tab: primary, social, promotions, updates, forums. The example is a great bulk-cleanup starting point. |
| Calendar | has:invite | has:invite | has:invite newer_than:7d | Messages containing a calendar invitation (.ics). |
| Chat | is:chat | is:chat | is:chat from:jane | Searches archived Google Chat messages rather than email. |
Ready-made power queries
Reclaim storage
Big old attachments are almost always what filled your 15 GB. Sort by size, delete in bulk, then empty Trash — space isn't freed until Trash is emptied.
category:promotions older_than:6m
Six-month-old marketing mail nobody will ever reopen. Select all → matching conversations → delete.
is:unread in:inbox -category:promotions -category:social
Your real unread count with the noise stripped out. Worth bookmarking as a saved search.
is:sent to:(client.com) older_than:5d
Outbound mail from over five days ago — a quick manual "who hasn't replied to me" follow-up sweep.
in:anywhere from:noreply@bank.com newer_than:30d
When an expected notification never arrived, this checks Spam and Trash too, which plain search silently skips.
| Group | Action | Windows / ChromeOS | Mac | Notes |
|---|---|---|---|---|
| Compose | Compose new | c | c | d opens the compose window in a full new browser tab instead. |
| Compose | Send | Ctrl + Enter | ⌘ + Enter | Fires immediately — but the Undo Send window still applies. |
| Compose | Add Cc / Bcc | Ctrl + Shift + c / b | ⌘ + Shift + c / b | Jumps focus straight into the field. |
| Compose | Insert link | Ctrl + k | ⌘ + k | Select text first to hyperlink it in place. |
| Compose | Discard draft | Ctrl + Shift + d | ⌘ + Shift + d | Permanent — discarded drafts don't go to Trash. |
| Reply | Reply | r | r | Capital R replies in a separate window. |
| Reply | Reply all | a | a | The muscle memory worth building deliberately, in whichever direction you prefer. |
| Reply | Forward | f | f | Forwards the currently open message. |
| Triage | Archive | e | e | Removes the Inbox label only — the message stays fully searchable forever. |
| Triage | Delete | # | # | Moves to Trash, auto-purged after 30 days. |
| Triage | Mark unread / read | Shift + u / Shift + i | Shift + u / Shift + i | The classic "deal with this later" move. |
| Triage | Snooze | b | b | Hides the thread until a chosen time, then returns it to the top of the inbox. |
| Triage | Star / cycle stars | s | s | Press repeatedly to cycle through star colors if you enabled extras in Settings. |
| Triage | Mute thread | m | m | All future replies skip the inbox — the correct escape from a runaway reply-all chain. |
| Triage | Report spam | ! | ! | Trains the classifier as well as removing the message. |
| Triage | Apply label | l | l | Opens the label picker; type to filter, Enter to apply. |
| Triage | Move to | v | v | Label + archive in one step, which is what "move" means in a label-based system. |
| Navigate | Next / previous message | j / k | j / k | Vim-style list navigation. |
| Navigate | Open / collapse | o or Enter | o or Enter | Toggles the selected conversation. |
| Navigate | Back to list | u | u | Returns to the thread list from an open message. |
| Navigate | Search mail | / | / | Focus the search bar — pair with the operators in the first tab. |
| Navigate | Go to Inbox | g then i | g then i | The g prefix starts every "go to" jump. |
| Navigate | Go to Starred / Sent / Drafts | g then s / t / d | g then s / t / d | Note Sent is t, not s. |
| Navigate | Go to All Mail | g then a | g then a | Everything including archived mail. |
| Navigate | Go to label | g then l | g then l | Then type the label name. |
| Selection | Select conversation | x | x | Toggles the checkbox on the focused row. |
| Selection | Select all / none | * then a / n | * then a / n | Selects the visible page; a banner then offers "select all matching this search". |
| Selection | Select read / unread / starred | * then r / u / s | * then r / u / s | Bulk-select by state without touching the mouse. |
| Undo | Undo last action | z | z | Reverses an accidental archive, delete, or label — including an in-window send. |
| Help | Shortcut overlay | ? | ? | Gmail's own always-current cheat sheet. |
Write the query in the search bar and confirm the results
Never write a filter blind. Type the query, hit Enter, and read what comes back. If it catches something it shouldn't, tighten it now — a wrong filter silently misfiles mail for months before anyone notices.
Promote it to a filter
Click the sliders icon at the right of the search bar (Show search options) → the query is pre-filled → Create filter. Alternatively: Settings → See all settings → Filters and Blocked Addresses → Create a new filter.
Choose the actions
The useful ones: Skip the Inbox (archive on arrival), Apply the label, Mark as read, Never send it to Spam, Always mark it as important, Forward it to, Delete it. They stack — skip inbox + apply label + mark read is the canonical "file it silently" combo.
Decide about the backlog checkbox
"Also apply filter to matching conversations" retroactively processes existing mail. Leave it unchecked for a brand-new rule you want to observe first; check it when you're deliberately cleaning up years of backlog. Retroactive deletes deserve a careful look at the match count before you click.
Export your filters as a backup
Settings → Filters and Blocked Addresses → select all → Export produces an XML file. This is the only real backup of filter logic you've built up over years, and it imports cleanly into another Gmail account — the fastest way to bootstrap a new work address.
Filter recipes worth stealing
- Query:
list:(*)— matches anything with a List-Id header, which is essentially every legitimate bulk sender. - Actions: Skip the Inbox + Apply label "Newsletters" + Mark as read.
- Result: they're all still there and searchable when you want them, they just never interrupt you. Read them on your schedule via
label:newsletters.
- Query:
from:(billing@myhost.com OR alerts@monitoring.io) - Actions: Never send it to Spam + Always mark it as important + Apply label "Critical".
- Why: spam classification is probabilistic and occasionally wrong about transactional senders. This is an explicit override for the handful of addresses where a false positive would actually hurt.
- Query:
subject:(receipt OR invoice OR "order confirmation" OR "payment received") - Actions: Apply label "Finance/Receipts" + Skip the Inbox.
- Pays off at tax time: one label holds the year's paper trail, and
label:finance/receipts after:2026/01/01scopes it to a fiscal year instantly.
- Query:
from:(spammer@example.com)→ action: Delete it. - Filters run before spam classification, so this beats repeatedly clicking "report spam" for a sender that keeps getting through.
- Gentler alternative: the "Block sender" option in a message's ⋮ menu routes them to Spam rather than deleting outright, which is safer if you might need the record later.
Extend Undo Send to 30 seconds
General → Undo Send → 30 seconds. The default is 5. There is no downside beyond a slightly delayed send, and it has saved more careers than any other checkbox in this list. Gmail genuinely holds the message locally for the whole window — nothing has left until it expires.
Turn on keyboard shortcuts and auto-advance
General → Keyboard shortcuts: On. Then General → Auto-advance → "Go to the next (newer/older) conversation" so archiving moves you straight to the next message instead of dumping you back to the list. Together these are the difference between clicking through an inbox and flying through it.
Set up Send-As for an alias or custom domain
Accounts and Import → Send mail as → Add another email address. Enter the address, provide its SMTP credentials, and confirm the verification email. Afterwards you can pick the From address per message, and set "Reply from the same address the message was sent to" so replies automatically come from the right identity.
Enable Templates (canned responses)
Advanced → Templates: Enable. Then in any compose window: ⋮ → Templates → Save draft as template. Combine a template with a filter's "Send template" action (Workspace accounts) for genuine auto-responses beyond the vacation responder.
Fix your signature placement
General → Signature → check "Insert signature before quoted text in replies". Without it your signature lands at the very bottom of a long reply chain, below everything, which looks broken to the recipient.
Enable offline access
Offline → Enable offline mail (Chrome only). Choose how many days to sync and whether to keep offline data on the machine. Read, write, search, and archive with no connection; everything syncs when you reconnect. Don't leave downloaded data on a shared or public machine.
Delegate access instead of sharing a password
Accounts and Import → Grant access to your account. A delegate can read, send, and delete on your behalf without ever knowing your password, and sent mail is attributed ("sent by"). This is the correct answer whenever an assistant needs mailbox access — sharing credentials never is.
Inbox layouts, and who each one suits
Default (tabbed)
Google's ML sorts mail into tabs automatically. Good if you get heavy consumer/marketing volume and are happy to let a classifier make the call.
Important first / Starred first
Splits the inbox into a priority section and everything else. "Starred first" is the version you control manually; "Important first" trusts Gmail's importance model.
Multiple Inboxes
The power-user option: each panel is defined by your own search query (e.g. is:starred, label:waiting-on, to:me is:unread). Settings → Inbox → Inbox type → Multiple Inboxes.
Unread first
Everything unread floats to a top section. The simplest option that still meaningfully improves triage, with nothing to configure.
Gotchas that trip up almost everyone
- One message can carry many labels at once. It isn't copied; there's a single message with several tags pointing at it.
- Archiving just removes the "Inbox" label. Nothing is deleted, nothing is moved — which is why archived mail still appears in All Mail and in every search.
- Deleting a label does not delete the messages under it. They simply lose that tag and remain in All Mail.
- "Move to" is really "apply label + remove Inbox label" performed as one action.
- The free 15 GB is shared across Gmail, Google Drive, and Google Photos — Gmail is often not the real culprit when you run out.
- Deleted mail sits in Trash for 30 days and still counts against quota until Trash is emptied.
- Start with
larger:10Msorted by size — a handful of old attachments usually accounts for most of it. - When your quota is full, you stop receiving mail entirely. It's a hard stop, not a soft warning.
- It disables forward, copy, print, and download within the Gmail interface — and nothing more.
- A recipient can still photograph or screenshot the screen. Treat it as friction, not security.
- The expiry date and SMS passcode are genuinely useful for reducing casual re-sharing, which is the honest use case.
- For real confidentiality you need actual encryption (S/MIME on Workspace, or an external tool) — not this feature.
- Attachments cap at 25 MB; anything larger is auto-converted to a Google Drive link, which means recipients need permission to that file — a very common "they can't open it" cause.
- Consumer Gmail allows roughly 500 recipients per day; Workspace accounts get about 2,000. Bulk mail belongs in a real mailing platform, not Gmail.
- Exceeding the limit locks sending for around 24 hours, with no way to expedite it.
Habits that compound
Mail to you+anything@gmail.com lands in your normal inbox. Sign up for services with you+vendorname@ and you can filter on it precisely — and instantly see who leaked or sold your address when spam starts arriving to that exact tag.
The arrow beside Send offers "Schedule send". Writing at midnight but landing in their morning gets materially better response rates, and avoids setting an always-on expectation with your team.
m on a runaway reply-all thread sends every future reply straight past your inbox, permanently. Deleting only clears the current message — the next reply comes right back.
Gmail encodes the query in the URL. Run is:unread -category:promotions, then bookmark the resulting page — a one-click custom view without touching any settings.
Scroll to the very bottom of the inbox → Details. It lists recent sign-in IPs, locations, and access types. A quick, free way to spot an unfamiliar session on your account.
takeout.google.com exports your full mailbox as standard MBOX, readable by Thunderbird or any mail client. Worth running once a year — account lockouts do happen, and there is no support line for consumer Gmail.