
My Gmail Productivity Hacks
I’ve been using Gmail since it came out — more than 20 years ago — and, honestly, it has always been a love-hate relationship. I never really stopped using it, but I also never stopped fighting it. Over time, instead of trying to bend Gmail to some ideal workflow, I ended up adapting myself to its quirks.
After decades of registering for services, subscribing to newsletters, being caught in multiple user-data leaks (as you can easily confirm on haveibeenpwned), and dealing with an endless stream of automated emails (like the GitHub notifications for every PR, CI run, Co-Pilot request), I found myself completely overwhelmed. At some point, it became clear that if I didn’t take control, my inbox would.
What saved me wasn’t a single feature, but a mindset: filters, labels, and search as first-class tools, not afterthoughts.
Today, I have around 400 filters and more than 600 labels, all organized hierarchically. That number sounds excessive — and maybe it is — but it reflects how fragmented modern email really is. Those numbers also keep growing, and I’ve learned to be okay with that.
None of this works, though, if you don’t understand Gmail’s search syntax. Gmail search is far from perfect (especially when compared to Google’s web search), but once you internalize its logic, it becomes the backbone of everything else.
For me, the single biggest missing feature in Gmail is a simple one: a reliable, always-accessible list of unread messages.
Inbox Zero is a nice idea, and I mostly agree with it. But once you start auto-labeling and archiving messages aggressively — which I do — the Inbox stops being a useful indicator of what actually needs attention. Add Google’s “smart” categories to the mix, and things get even noisier.
What I really want is boring and simple: one place where I can see everything I haven’t read yet.
And the solution turns out to be almost embarrassingly simple.
Go to the search box, type is:unread, and voilà — every unread message in my account appears, regardless of where it lives.
That single search drives a big part of my daily workflow.
Search Filters for the Win
These are not all the search operators Gmail supports — just the ones I personally reach for all the time. They come straight from Gmail’s documentation, but more importantly, they reflect the way I actually work.
Search Query | What It Does |
|---|---|
is:unread | Lists all unread messages (excluding spam and trash) |
is:unread in:inbox | Unread messages still sitting in the inbox |
is:unread in:inbox has:nouserlabels | Unread inbox messages with no user labels — my favorite way to discover gaps in my filters |
from:@example.com | Finds all emails from a specific domain |
to:me subject:"Run Failed" | Finds all emails with “Run Failed” in the subject |
has:attachment | Shows all emails with attachments |
older_than:1y | Emails older than one year |
after:2010/08/22 before:2010/08/25 | Messages received in a very specific time window |
in:anywhere from:@example.com | Messages from a domain, no matter if they’re archived, trashed, or even in spam |
My workflow around this is intentionally simple: I search first, I sanity-check the results, and only then do I create a filter.
Over time, this approach quietly reduces inbox noise and, more importantly, reduces the mental effort required to deal with email at all. Gmail doesn’t disappear — but it becomes manageable, predictable, and mostly out of my way.