Finding Gmail Messages with No Label

,

You want all your GMail messages to have a label, maybe several. So how do you find the ones with no label?

There’s no simple button you can push. But you don’t want to wade through the whole set of emails manually, right?

A little filter magic will sort this out in no time.

If you don’t want all the mumbo jumbo philosophy of why or why not to do this, skip down to Quick Version: GMail Filters for Finding Unlabeled Messages below.

Take me to the answer.

If you’re trying to achieve something else with labels, go down to the gory details for tips on how to do complex searches with labels, going through your archives, saving searches as bookmarks and so forth.

Take me to all the gory details.

If your question isn’t answered here, take two seconds and ask it in the comments. If I know the answer or can figure it out, I’ll do a followup post.

If you want all the background… just keep reading.
Boss yelling at employee: You archived the email on the burton account before labelling it! It’s lost forever you fool!

Why do we even want to find unlabeled emails?

I assume if you’ve arrived here, you already have your reasons. But you might be asking, why get so obsessive?

A couple of possible reasons:

  • You may want to do an import from another account or something like that. So you label everything currently in your account with “main” and then when you import, you find all unlabelled messages, label them “imported” and then delete the “main” label.
  • You just like every single thing to have a label because you’re that kind of person.

I’ll be honest — when I wrote this, I wanted everything to have a label. Why? Because in the past I had used clients like Thunderbird and Outlook that had the concept of folders, but not labels. The inbox is just a folder. So if you want to get something out of your inbox, it has to go in a different folder.

Gmail is different

Gmail is different. For one, the search function is really good. This means that I am more likely to look for something via search, than by drilling down through folders/labels.

In short, I do not ever use this method myself anymore. Instead, I have a manageable number of labels and a lot of filters. Most recurring emails get a label automatically and then I archive when needed. I  label things that I need for taxes or with a project name, but typically I have a filter that just applies the label. Then I depend on search. Automate what you can. Forget 90% of the rest.

That doesn’t mean people don’t have very good and compelling reasons for wanting to find unlabeled messages, but you might ask yourself whether or not you’re bringing an Outlook/Thunderbird mindset to a Gmail and just let it go.

 

I originally wanted everything labeled, but I was wrong. What I found was that I was better at remembering conversation keywords than I was at remembering labels and searching for conversation keywords is Google’s core competency. I decided that organizing my email manually was a waste of time and a study by IBM confirms this.

Yes, I have been assimilated by the Gorg!

Quick Version: GMail Filters for Finding Unlabeled Messages

This article has evolved a lot as Gmail evolved and I’ve tried to rationalize it a bit and get to the point (it was littered with dated “updates”). Here’s the short answer. If you want to understand what these filters mean, how we came up with them, or how to use them, scroll down for the original article which gives all the practical and theoretical background on custom Gmail filters.

All right already, show me the method!

Method 1 — Simple and mostly reliable

Still in June 2016 as I edit this, the best method currently seems to be to exclude anything that has custom labels or one of the standard built-in labels as follows (thanks Tony Franks for the comment from 2013-07-01):

-has:userlabels -in:sent -in:chat -in:draft -in:inbox

Method 2 — Simple but not very reliable.

If that doesn’t work, you can try a method JonG posted on 2013-01-14. Unfortunately that method seems to be flaky for many people and has never worked at all for me, but it does work for others:

has:nouserlabels -in:sent -in:chat -in:draft -in:inbox

Method 3 — highly reliable but a pain in the butt

My original method is more labor-intensive but at the time, the special “userlabels” pseud-label wasn’t available, so you had to laboriously build a search and save it for future use. This method is a pain in the neck, but works reliably precisely because it doesn’t really depend on any tags with special meaning. The key is that you can combine single-word labels in braces, but multi-word labels seem to need their own entry with the spaces replaces with dashes, like so:

-label:{label1 label2} -label:label-three -label:label-four -in:sent -in:chat -in:inbox

If you do this more than once, typing in all your labels in the arcane syntax Gmail uses gets old. So what I’ve done is simply create a shortcut, which you can do quite easily and it works up until you add a new label, but then it’s just a simple matter of editing the bookmark.

Method 4 — Desperate Measures

Finally, if all else fails, you can use this roundabout method from Federico (comment from 2013-06-08):

  • First search for every message that HAS a label (has:userlabels)
  • Label ALL of the results with a new “LABELED” label (or whatever you want)
  • Now search for has:nouserlabels
  • Ba Dum, you got them!
  • Delete your “LABELED” label.

Conversation Mode and labels

With all methods, Danimal suggests turning off conversation mode (threaded conversations) as that can make things confusing.

I like leaving conversation mode on because I generally want to catch only entire conversations with no labeled messages at all. If any message in the thread is labeled, that’s good enough because I’ll find the conversation via the label.

But if you want to find not unlabelled threads, but all unlabeled individual messages, then you need to do as Danimal says.

Details: Understanding GMail Filters

You have a full syntax and a compact syntax and, as far as I can tell, the compact syntax does not work with multi-word labels. So if you have Gmail labels with spaces in them, you have to use the full syntax and substitute hyphens for spaces.

So let’s say you have the following labels:

  1. Label1
  2. Label2
  3. Label Three
  4. Label Four

First, we want to exclude all messages that have those labels. To exclude a labeled message from your search, you use the -label: operator.

For the single-word labels, we’ll use the short syntax. This allows you to group terms within curly braces without repeating the “-label:” qualifier. So it looks like this in your Gmail search box

-label:{Label1 Label2}

Simple as that.

Multi-word labels are a bit more complex

Now for the multi-word labels, in theory, I merely need to add quotes around the terms, and they should work within the curly braces. Not so for me. If you create a filter and look at the test search, that’s not how it does it either. So based on that, what I found worked for Label Three and Label Four was:

-label:Label-Three -label:Label-Four

So the entire search, with both single-word labels and multi-word labels, looks like this

-label:{Label1 Label2} -label:Label-Three -label:Label-Four

Now, that will create a URL that looks like this

http://mail.google.com/mail/#search/-label%3A%7BLabel1+Label2%7D+-label%3ALabel-Three+-label%3ALabel-Four

Save your search for later use

Now you can save this as a bookmark or shortcut and instantly access your unlabeled Gmail messages. Sometimes Gmail will add a zx parameter to your URL that looks like zx=afeoasdxou3swf that is just a random string so that if your ISP is caching data, it will see this as a unique URL and won’t give you cached data for Gmail. Since this effectively creates a single-use URL, if that appears in your URL when you do your search, you should edit it out before saving the bookmark.

Note that if a message has two labels and you are only excluding one of those, the message will still show up in your search. So if you have something labeled Label1 and Label5, and you use the search above, it will still show up in your results.

Also, sometimes a conversation that is labeled shows up because one message is unlabeled or is still in the Inbox. If you select the whole conversation in the list view and label it, that takes care of that issue.

Additional Operators and Pseudo-Labels

As you saw above, there are additional operators (in and has) and special built-in pseudo-labels (userlabels).

Depending on what you are trying to do, you can shorten or refine your search by using in with any built-in label (inbox, trash, etc) and has with userlabels.

  • -in:inbox (don’t find anything if it’s still in the inbox)
  • in:trash (if you want to search the Gmail trash, you need a special operator because by default it’s excluded)
  • in:anywhere (lets you do a search that includes spam, trash, inbox and, well, messages found anywhere)
  • -has:userlabels should be the same as has:nouserlabels, but in practice people report that they are not.

There are tons more options. See the Google Gmail Label Documentation for a full and current list.

Labeling Your Backlog

As per Karen’s suggestion below (see comments), if you’re trying to identify your unlabelled email just once and label your backlog, then you can view All, apply a label like “NoLabel” to it (or move them all to the Inbox as Karen suggests).

Now go into every other label folder, select all and remove the “NoLabel” label (or Archive if you put them in the Inbox). Now if you go to the NoLabel folder, you have all your unlabelled email. If you’re going to do this on any kind of regular basis, though, you’ll want a bookmark as described above, otherwise this will be pretty time-consuming.

Dealing with Child Labels and Labels with Special Characters

James asks, what happens if you have special characters like underscores or slashes in your Gmail labels? If you are using the Gmail sublabel feature, you will automatically have slashes because Gmail separates parent and child labels with slashes (look at Gmail in the Basic HTML mode and you can readily see this). First off, most special characters are just entered as such. Slashes must be entered as hyphens.

So let’s say you have the following setup:

  • Main
    • test1
      • test2
    • test3/test4
    • test*,:-test-./test

In that case, your search syntax will be, respectively

  • -label:main
  • -label:main-test1-test2
  • -label:main-test3-test4
  • -label:main-test*,:-test-.-test

Note that a label called “test3/test4” which is a single label, behaves exactly the same as test2 which is a child label of test1. And for anything except slashes and spaces, which are both replaced by hyphens, you just use the character as it appears in the label. That’s even true for the colon, even though it’s part of the search syntax.

A Question for YOU (please read)

Did you really make it all the way to the end of that article? You have endurance and perseverance, which makes me think I can ask one little favor. Would you be so kind as to add a comment below or go to my contact page and tell me what trouble you have with email currently. What is your top email pain point? I’ve been giving a lot of thought to the topic over the last couple of years and am preparing some articles on the subject and would love to hear from you about what you would like help with or your best ideas for reducing the pain of email hell.

I guarantee that you will not get added to any mailing list and, in fact, your email address won’t even get saved except insofar as WordPress saves it with all comments and form submissions as a spam-fighting tool.

88 Responses to “Finding Gmail Messages with No Label”

  1. I can’t get your solution to work. I have been trying all night and I can’t get Gmail to subtract more than two labels from the search. If I subtract the labels “friends” and “family” then no matter what netative search I put next, it will not recognize it and come up with a proper list. I could live without being able to subtract all the labels, but there are three major labels I use, and in order to find the unlabeled messages, even by hand, I need to remove these other three labels. It’s very frustrating.

  2. Sorry Jill. It can be frustrating and maybe I haven’t explained it well. It took me a lot of tries.

    If you post your list of labels, I’ll see if I can’t get it to work right.

  3. Thanks for the tip. Just what I was looking for.

    But regarding:

    “aside from Gmail not having a decent way to delete a message without get kicked back to the message list (instead of just going to the next message like every other email client on the planet”

    Just for the record, there are people (at least one?) that prefers this behavior. I selectively scan and read my inbox, leaving unread the messages I may not want to deal with at the moment. Many (most) of these can be determined just from sender/subject.

  4. Thanks Matt. I’m sure you’re not the only one as the designers must really like it this way and my nephew thinks the gmail interface is near perfect. I would just love it have it as a setting (i.e. action to take on deleting current message).

    I hope the unlabelled message thing works for you. It didn’t work for Jill and I tried to help by email, but I just couldn’t get my method to work for her.

  5. Thanks a million for this it really helps.

    What I found annoying was that it was also bringing in all my chat logs. I found starting the search queury with in:inbox solved this.

    So my search looks like this:
    in:inbox -{label:Label1 Label2 Label-three}

  6. thanks!

    I also remember there being a greasy monkey script that would add a shortcut to your list of labels and call it “unlabeled”, clicking it would lists all the unlabeled messages.

  7. Tom – thanks for the post. I was initially hestitant to do it as i had 50+ labels and finally tried it. It worked as expected.

  8. Thanks for this!

    You might be interested to know that slashes (/) for subfolders also get replaced by hyphens, so to exclude ‘top folder/subfolder’ you would use ‘-label:top-folder-subfolder.

    Square brackets don’t get changed though, so to exclude ‘[Imap]/Drafts’, you would use ‘-label:[imap]-drafts’.

  9. If I’m reading your lament about deleting messages correctly, and you actually mean archive, try using “[” while in a message. It archives the messages and goes to the next one. If not, never mind.

  10. No Sam, I don’t mean archive. Archive is Archive and Delete is Delete.

    I don’t want to archive spam mails, non-spam mass mails about Home Depot’s Labor Day sale, one-line mails from a friend where someone says “Okay, Sunday at 7:30 then” which are useless come 7:31 on Sunday. I suppose I would also delete embarrassing and incriminating emails if I had any of those, though I try to not write those in the first place!

    Ideally, I want messages that only have some information that I could conceivably care about cluttering up my archives.

  11. The trick to find ONLY the unlabeled mails (neither those emails who are in a conversation)

    The method is the following:

    Step 1: Seach for mails containing all labels using the OR-operator (ie. label:label1 OR label:label2 OR label:label3 etc.)

    Step 2: Star al these conversations.

    Step 3: create a new label (ie. LABELWITHOUTSTAR)

    Step 4: Seacht for conversations without a star ( -is:starred)

    Step 5: Select al these conversations and apply the LABELWITHOUTSTAR label.

    Finished!

  12. Hey Wander,
    Thanks for the tip.

    The problem with that is that you have to do it every time, and then you also have to use stars that way.

    Once you set it up, my method gives you one-click access to all those messages without any other steps.

    Which method you prefer would depend on how often you do this. If you do it a lot, it’s worth the overhead to set up my method. If you just want to do it rarely, then your method is probably less effort overall.

  13. The way not to do it every time and make only unlabelled messages show:
    1 – Create a label and call it UNLABELLED for instance
    2 – Create a filter with the following code in the “Doesn’t have:” space:
    l:label1 OR l:label2 OR l:label3 OR …. OR from:me OR in:chat (replacing label1, label2, etc with the names of your labels)
    3 – Click “Next step >>” and in “Apply the label:” choose UNLABELLED or whatever name you’ve given to your new label in step 1.
    4 – Click “create filter”.
    5 – From now on to see only unlabelled messages click on UNLABELLED label.

  14. Hmm, maybe I’m missing something, but I think I have a better solution :-) (Ok, I’m probably totally missing something, but here goes)

    The Skip-Inbox-mehod.

    The idea is do this all “backwards”: Let *no* email with a Label applied end up in the “Inbox”. The Inbox will be that interesting place where you notice those unknown unknowns — only *unlabeled* messages end up there.

    To emulate the functionality of the regular Inbox (now that we’ve sort of “ruined” the real one), use a new Label called TheBigInbox.. and a create a new Filter that will apply that Label to *all* messages:

    * Matches: from:(*)
    * Do this: Apply label “TheBigInbox”

    Why is this better? Well, it’s *easier* to tell each Filter (that applies a Label) to “Skip Inbox” than to enumerate all Labels (handling spaces and using curly braces and whatnot) in a query. And when a new Filter (Label) is created, there is no need to edit that cumbersome search query with curly braces and all, just tell it to “Skip Inbox” — that’s all! This should be more maintainable, right? Two examples:

    == The following filters are applied to all incoming mail: ==

    * Matches: from:([email protected])
    * Do this: Skip Inbox, Apply label “Donald”

    * Matches: list:”known-unknowns.com”
    * Do this: Skip Inbox, Apply label “known-unknowns”

    Thanks,

    – Hugo

  15. does anyone know if there’s a wildcard operator? ALL of my labels start with “INBOX\” so a wildcard would solve my problems, although that doesn’t seem to be working when I try it.

    -label:{INBOX\*}

  16. Matt –

    yes! finally able to search for unlabeled mail! thanks a lot.
    also used your information to be able to create quick searches that search for labeled mail in inbox (so I can archive them quickly) and all sorts of other useful tricks

    thanks a lot again.

    best regards
    sfd

  17. Tom,

    sorry, accidentally called you Matt – again. thanks for the info.

    best regards
    sfd

  18. Steve, I don’t think there’s a wildcard. At least not to my knowledge. It would be nice if they just added a system label like the “Unread” label

    l:^u
    l:unread
    label:unread

    Will all show unread messages. Why not a l:nolabel system tag?

    SFD – no problem. Matt. Tom. Hey. I’ll answer to anything that’s not insulting.

  19. I don’t believe anyone has addressed the problem of having conversations that still show up when some of the messages within those conversations match the search. The solution is relatively simple, as long as you don’t have a ton of labels and/or filters: Select all conversations in a given label, then move them to a new label. This will label ALL messages within each conversation. Then the search works perfectly as given.

  20. Following on from Bill’s comment above about some still showing up, I had the same issue and it seems to be that the search only works if the label was applied to the first message in a conversation.
    What I did was unlabel them and apply the label again.

  21. So far, the emails within emails that don’t have labels are messing me up, as it’s bringing all those forward even though single emails have labels.

    It seems that Andre’s method is going to work for me… So far, so good, anyway. :)

    “The way not to do it every time and make only unlabelled messages show:
    1 – Create a label and call it UNLABELLED for instance
    2 – Create a filter with the following code in the “Doesn’t have:” space:
    l:label1 OR l:label2 OR l:label3 OR …. OR from:me OR in:chat (replacing label1, label2, etc with the names of your labels)
    3 – Click “Next step >>” and in “Apply the label:” choose UNLABELLED or whatever name you’ve given to your new label in step 1.
    4 – Click “create filter”.
    5 – From now on to see only unlabelled messages click on UNLABELLED label.”

  22. Oh plus… what I really want (and Andre’s method seems to solve) is to give a no_label label too all incoming mail that is not assigned another one of my labels. I don’t really want a rule for every single email that I get.

    This would be contingent upon Gmail applying the other labels first, and then applying the no_label label last, after checking for any other labels. I don’t know how gmail’s logic works, but so far, so good.

  23. Well, I’m glad you have a semi-workable solution. I don’t think you’ll ever get GMail to follow complex order of operation rules whereby you check all other rules and if it doesn’t have a label yet, it gets “no label” Or at least it will take a long time given that you can’t even have multiple signatures yet!

  24. Thanks it works although it was time taking as i had lots of labels in my gmail, but thanks it works

  25. Yeah, I have a ton of labels, so it is a hassle. Google has been making a lot of enhancements lately, so we can hope for an integrated solution.

  26. A fine read (Your headline, ‘
    Find All Unlabeled Gmail Messages :Raised By Turtles’ made me giggle) and some quite interesting points made. The fact that merely a modest percentage of people will likely be affected to my mind doesn’t cause the measures used here.

  27. Thanks for this. I had a lot of labels so I shortened the process of creating the search string by copying and pasting them all into Excel, sorting and deleting non-label items, then pasting just the labels into Word and changing the end-of-line characters to spaces. Then I had to remember that any labels for sub-folders have to be written using the “full” syntax. THEN I had to remember to switch Conversation view off. But ultimately it worked great! How absurd that Gmail does not already include a simple “Search for unlabeled messages” button!

  28. agnieszka

    after pasting my labels into excel, i discovered i have 195 of them. it was easy enough to apply the syntax to in excel, but the clincher here was that the search field in gmail did not accept that lengthy a string.

    got to less than half-way. seems the character limit in the search field is approx 1,891.

    ho hum.

    i wish it just gave you a button you could press! maybe it’s going to be in an upcoming lab. :-/

  29. Sorry it took so long to respond….

    Thanks for the heads up on the 1891 character limit. That’s helpful.

    Given that there are 30 comments on this page, that indicates some interest, and I bet there will be some Labs feature for this at some point.

  30. Hey you should really check out gmail labs
    Autoadvance and QuickLinks

  31. Just use gmail archive function to achive this-
    Step1: click on each lable to select all mails inside it and archive all the mails
    Step2: go back to inbox and you will not see labelled mails, however they can be viewed when you click on the lable link or when you click All Mails lable

  32. Thanks Saurabh – I’ll check them out.

    Javed, thanks for the idea, but the problem is when I want to look at unlabelled emails that I have already archived. I archive all emails as I process them. I could create a label called “misc” and label every single email, but that’s a hassle.

  33. Hi All

    How about this:

    1) select ALLMAIL, move all to inbox
    2) go into each label, select all in that label and ARCHIVE

    now the inbox should only contain emails that don’t have a label.

    This works for me in the short term to sort all my old “archived” emails that previously had no label.

    hope it helps someone.

    Karen :)

  34. What about labels with more than spaces…

    For Example:

    __Purchases/2010/Tax Deductible (Has underscores and multiple slashes for path)
    [Imap]/Sent (brackets and slash for path)
    Clients/Finished (Just a slash to denote path)
    Jobs – Applied (spaces and a hyphen)

    Thanks!

  35. @Karen
    You can do that, but it’s a bit of hassle to do that every time. You could also look at all mail, add a label called “Nolabel” and then go to every label, select all and remove the “Nolabel” tag and then everything in the Nolabel box has… well only one label, the “nolabel” label.

    @James
    Slashes are special and are replaced with a “-” so for example, if I have

    Websites/test1/test2

    the search label is “websites-test1-test2”

    All the other characters are just used as they are.

  36. Thanks for the tip! Works for me!

    I’ve also found that when you have two or more words making up a label, you can use the hyphen (“-“) for the space and get the proper results, for example:

    -label:{Priority-One Priority-Two}

    would bring up all messages that do not have these labels:
    Priority One
    Priority Two

    Thanks again!

  37. Scott W

    Here’s another handy setup based on your helpful posts:

    1) Near the “Search” button, click on “Show search options”
    2) Fill in the “From” field with -Your-Name, to exclude items from “Sent Mail”
    3) Fill in the “Doesn’t have” field with “l:Inbox OR l:label1 OR l:label2 OR …”
    4) Click the “Search Mail” button to test

    When the search is satisfactory:

    5) Select the whole URL field in your browser
    6) Click the “Compose Mail” button, paste the URL into the body of the message, add a suitable title, and mail this to yourself.

    Now you have an email that you can archive with a clever title you can remember. Find the mail, click on the URL within and the search is re-created whenever you need it. As an email message, this follows to all platforms, not just your present browser.

    Also, when you click the URL, the original search form is re-created, and you can revise the search with new labels when needed.

    -Scott-

  38. Don.a.dio

    contact synchronization is possible through Thunderbird using Dropbox by creating symlinks to the impab files. If you also use Apple’s Address Book, it now syncs with Gmail and TB.

  39. Excluding one label from a search fails when viewing the second page. ie: search results 1-20 do have the label excluded, but when I click the right arrow to view search results 21-30, the list includes emails with the excluded label.

    Suggestions?

  40. Hey Dan,

    I’m not really sure. For me it works roughly as expected. It will progress to the next page (21 to 40 of 172) without issue except that the “of” part keeps changing until it finally calculates the true result and switches to “21 to 40 of many”.

    To be honest , though, I’ve finally thrown in the towel and just use search to locate email.

  41. Jani,
    I tried that. It didn’t work for me.

    Google,
    While the idea of “labels” is somewhat innovative, it is poorly implemented. Please fix this!

  42. Jani, that doesn’t work for me either. It shows all kinds of mail, with and without labels.

    Brett, aside from the issue with not being able to see items with no labels, what else is wrong?

  43. Steven Stern

    This doesn’t work for me:

    -from:([email protected]) -{l:inbox l:label1 l:label2 l:label3 l:lable4 l:label5 l:label6}

    I seem to be picking up sent mail.

  44. Steven Stern

    Thanks! I’m getting close with -is:sent and -l:Sent

  45. Anonymous

    Hello gyus,

    i have a label which is called: appl

    and i want the search to show me the inbox without the massages with the label appl.
    So I typed in:
    in:inbox -(label:appl)
    and it doesnot work.

    i tried this either:
    in:inbox -label:appl

    and it doesnot work too.

    any suggestions???

  46. It works fine for me. For example, I have a label YWPHI and I have one item in my inbox with that label.

    in:inbox -l:YWPHI

    shows me the contents of my inbox, minus items labelled YWPHI.

  47. Valerie

    Alternatively, you could set up all of your labels to skip the Inbox. Then your inbox becomes the area for unlabeled emails. The “All Mail” area then becomes what your Inbox used to be.

  48. Valerie – that’s pretty brilliant! Definitely a good alternative!

  49. I’ma afraid this does not work for me at all. The method works when I have four or less labels in the string, but when I add further labels the search returns a seemingly random set of messages many of which have labels that I have excluded. I have checked the syntax meticulously and tried it in both shortened and full forms.

  50. Hmmm… Not sure what could be the cause. One thing to watch for is if you have a message with multiple labels, it makes the filters a lot more complex, because even if you tell it not show messages with labelA, if a message has labelA and labelB, your filter will still show it based on labelB.

    Could it be something like that?

  51. I’m starting to try another approach: to use a filter to set a label to all incoming mail (I use the label “ND” for “Not-Done”).

    When I manually label something I also remove the “ND”, so the former “unlabeled” messages now are the “ND” ones. Forgetting the cleaning of the “ND” label its not a big issue because delimiting searches using labels is easy, and you can do a clean up from time to time.

    The filter simply labels all incoming mail that does not match something highly improbable (e.g. “hapevgdtaiahdg”).

  52. yep, all you need is this now:

    has:nouserlabels -in:Sent -in:Chat -in:Draft -in:Inbox

  53. Hi JonG,

    Thanks for the tip. Interesting. I searched my mail for the word “water” just because I knew I had an unlabelled message with that in the title. And mostly your search worked – it filtered most, but not all, mail that had labels applied. The mail with labels that came through seemed to have no rhyme or reason, just the odd random label. But out of 169 results, only about five had labels and without your has:nouserlabels there were 280 results. So it seems to mostly work. Thanks!

  54. I think you are saying that “has:nouserlabels -in:Sent -in:Chat -in:Draft -in:Inbox” will find all unlabeled emails in your inbox. I added some mails without labels and it does not find them :-(

    If I have to list al my labels, that would be a pain since there are so many!

  55. Anonymous

    I have hundreds of labels. 250,000 emails. Any better solutions ?

  56. alexandra

    Way late to the game, but this was still the first result when I tried to answer this. Turns out gmail finally caught on and got a solution:

    has:nouserlabels

    works beautifully. finally!

  57. Danimal had a useful comment that I someone deleted, probably while bulk deleting spam comments. Anyway, it went like this:

    “In order to get this to work correctly, you must turn conversation mode off.

    Gmail puts labels on each individual piece of mail, this sometimes skips certain emails within a conversation.”

  58. Federico

    Hello!
    The problem with has:nouserlabels is that it might show conversations where one of the messages doesn’t have a label, even if the others do.

    You might want to try this:

    – First search for every message that HAS a label (has:userlabels)
    – Label ALL of the results with a new “LABELED” label (or whatever you want)
    – Now search for has:nouserlabels
    – BUM, you got them!
    – Delete your “LABELED” label.

  59. I found your original script:

    has:nouserlabels -in:Sent -in:Chat -in:Draft -in:Inbox

    was quite flaky, but a little tweak:

    -has:userlabels -in:sent -in:chat -in:draft -in:inbox

    does the job very easily

  60. I tried the original method as well as Tony’s method on 6 accounts today, 2 regular GMail / Google accounts and 4 accounts under different Google Apps for Business accounts – both produced the exact same results.

    I’, not sure about this, but country specific Google URLs, like google.co.in for Google India – do they have country specific URLs for GMail too? I just tried, but was redirected (after logging in) to mail.google.com, so I’m not sure if that would be a factor or not.

    At any rate. I keep finding different recipes for Thunderbird for use with GMail, and invariably one particular setting that I change, having to do with email deletion, always creates these ghost entries that are not actually deleted, but hang around cluttering up my All Mail when they should, in fact, be deleted. This article is a lifesaver for me – I used to try to do it the old fashioned way – but I’m too old for hunt and peck in All Mail….

    Thanks for this article and the revisits / updates.

  61. Oh, gawd – thank you for this. I’ve been looking for the way to search for unlabeled items for YEARS.

  62. Glad it helped. Take some time to read the comments too – I’ve tried to fold suggestions from the comments into the text, but there are some gems in the comments that folks have contributed that might be of use!

  63. e-zrider

    TY been looking for this for years but i had added a twist in that the label was based on an email and then using the has:nouserlabels i was finally able to find the non labels items within an email. TY!!!

  64. For those of us that can’t get -has:userlabels to work….Frederico’s solution worked like a charm!

  65. Nice, thank you! Especially the Federico’s solution from June 18, 2013.

    The tricky thing is that in a conversation, there can be messages with or without a label, so the conversation will be shown in both has:userlabel and -has:userlabel. This happens AFAIK when you assign a label to a conversation and the conversation then continues, so new messages are not assigned with the same label in advance.

    So the Federico’s method is IMHO the only correct and straightforward solution for vast number of messages/conversations. Good job!

  66. tisna

    thanks for sharing.
    it helps me find unlabel email back to inbox

  67. James Alexander

    “-has:userlabels -in:sent -in:chat -in:draft -in:inbox” does work but I recommend you turn off threaded conversations under settings. If you don’t turn off threaded conversations, your results to this query may be confusing if you’ve applied labels to some emails in a given thread while other emails in the same thread were archived. By turning off threaded conversations, all emails are listed individually and any with labels, even if part of a partially archived thread, are now excluded.

  68. This is a good point – this used to throw me all the time when I first started with GMail. I couldn’t understand when all these messages that were missing my search word or label showed up. Now that I’m used to threaded conversations, though, I prefer to get the conversation rather than the individual message.

    If you use the threaded view, though, labels always apply to conversations. And I try to keep my inbox close to empty, so I don’t really have partially archived threads. I guess it comes down to how you use GMail. I don’t know. As I say, I think at least for me, trying to find and label unlabeled emails was a fool’s errand. Now I label a handful of essential topics and just archive or delete the others and depend on search to find unlabeled emails.

  69. Same for me, I realised that I had a label for everything but I wasn’t really using them. I essentially turned to Google Inbox from GMail and use only 3 custom labels. With automatic filtering and grouping messages into Updates, Forums, Promos, Social (which I will never search for) leaves me with only few messages in archive I can easily go through. I also realised that using search to find what I want was faster even when I had all messages labeled manually.

    So, I definitely agree with “…it comes down to how you use GMail.”

  70. Interesting! I tried Inbox because it sounded like I would like it, but I actually found it confusing. It kept grouping things in ways that didn’t make sense to me and I accidentally missed mails from friends and just never got it. I ended up switching to ActiveInbox which I really like but it does cost money (30/year) for one account and cheaper deals if you have more accounts.

    I’ll have to try Inbox again. Does it learn your preferences and improve over time?

  71. I still miss some features GMail has (advanced filtering options, send email to group just by typing in the group name,…), but I like the GUI of grouping emails in Inbox – it’s transparent for me.

    It improves somehow (it is said that you can improve the labeling accuracy by manual assignement) but I’m affraid it’s not much sofisticated and leaves you with just a filtering by email address.

    So far (few months) I haven’t noticed missing an email. It rather not assign the label at all than assign it incorectly. Also, you can set the LowPriority label not to skip the inbox, which may have been your case.

    GMail is more technical, compact, powerful, but Inbox has some nice features like Pin, Snooze and Reminder, which are more obvious and easy to use, especially with Google Keep and Calendar. All of them are flawlessly synchronized on Android as well.

  72. Thanks for the rundown. I think the Reminder feature is the one I would use. I have used things with Snooze (Boomerang, Streak) and ActiveInbox does not do this on the theory that you don’t want to just kick things down the road.

    I don’t know as I always agree with that – sometimes I just want to snooze and email for a couple of days (like if someone says “If you don’t get it by Thursday, let me know”).

  73. Mark Dhas

    Thanks incredibly useful. All I needed was to use label:unread has:userlabels I could then find all the stuff that I had labelled but hadn’t marked as read (mostly) newsletters etc. This allowed me to run the converse label:unread -has:userlabels, I then created filter rules for everything I saw…

  74. Cheryl

    This is very helpful, thanks! Just a question: does anyone know what is unreliable about Method 1? Does it sometimes end up finding messages that actually have a label? Or does it sometimes miss finding messages that aren’t labelled? Or something else?

  75. I think for some people it just doesn’t filter out all the labelled messages. The last complaint about that, though, is from 2014, so it may well be working better by now.

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>