Index: src/org/openstreetmap/josm/actions/search/SearchCompiler.java
===================================================================
--- src/org/openstreetmap/josm/actions/search/SearchCompiler.java	(revision 1365)
+++ src/org/openstreetmap/josm/actions/search/SearchCompiler.java	(working copy)
@@ -292,6 +292,13 @@
         @Override public String toString() {return "incomplete";}
     }
 
+    private static class Untagged extends Match {
+        @Override public boolean match(OsmPrimitive osm) {
+            return !osm.tagged;
+        }
+        @Override public String toString() {return "untagged";}
+    }
+
     public static class ParseError extends Exception {
         public ParseError(String msg) {
             super(msg);
@@ -375,6 +382,8 @@
             return new Modified();
         } else if (tok.equals("incomplete")) {
             return new Incomplete();
+        } else if (tok.equals("untagged")) {
+            return new Untagged();
         } else if (tok.equals("selected")) {
             return new Selected();
         } else {
Index: src/org/openstreetmap/josm/actions/search/SearchAction.java
===================================================================
--- src/org/openstreetmap/josm/actions/search/SearchAction.java	(revision 1365)
+++ src/org/openstreetmap/josm/actions/search/SearchAction.java	(working copy)
@@ -89,6 +89,7 @@
                 + "<li>"+tr("<b>modified</b> - all changed objects")+"</li>"
                 + "<li>"+tr("<b>selected</b> - all selected objects")+"</li>"
                 + "<li>"+tr("<b>incomplete</b> - all incomplete objects")+"</li>"
+                + "<li>"+tr("<b>untagged</b> - all untagged objects")+"</li>"
                 + "<li>"+tr("Use <b>|</b> or <b>OR</b> to combine with logical or")+"</li>"
                 + "<li>"+tr("Use <b>\"</b> to quote operators (e.g. if key contains :)")+"</li>"
                 + "<li>"+tr("Use <b>(</b> and <b>)</b> to group expressions")+"</li>"
