diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,10 @@
 # rhbzquery releases
 
+## 0.4.4 (2021-09-06)
+- experimental '--reverse' command: converts url to args
+- add 'arch'/'platform' aliases
+- '--list-fields' now prints field aliases too
+
 ## 0.4.3 (2021-02-15)
 - support status with '<STATE' and '>STATE'
 - Bugzilla uses 'notequals' (not 'notequal')
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -10,13 +10,13 @@
 
 ## Usage examples
 
-`rhbzquery f33 xyz` : Fedora 33 bugs for package xyz
+`rhbzquery f34 xyz` : Fedora 34 bugs for package xyz
 
 `rhbzquery closed rawhide xyz` : closed rawhide bugs for package xyz
 
 `rhbzquery --mine` : your open bugs (gets userid from `~/.bugzillarc`)
 
-`rhbzquery rhel8.3 bash` : RHEL 8.3 bash bugs
+`rhbzquery rhel8.4 bash` : RHEL 8.4 bash bugs
 
 `rhbzquery "Package Review" reporter_realname="Your Name"` : open package reviews you reported
 
@@ -24,7 +24,7 @@
 
 `rhbzquery component~bugzilla summary~bugzilla` : open bugs with component and summary containing "bugzilla"
 
-`rhbzquery --file f33 xyz` : file a bug against the xyz package in F33
+`rhbzquery --file f34 xyz` : file a bug against the xyz package in F34
 
 `rhbzquery --query rhel8 ...`: open an advanced bugzilla search for RHEL 8
 
diff --git a/TODO b/TODO
--- a/TODO
+++ b/TODO
@@ -3,3 +3,5 @@
 - cc=me, reporter=me
 - config file: for defining "my team" etc
 - --count bugs (no such api though)
+- query aliases
+- abbrev for Fedora Container Images
diff --git a/rhbzquery.cabal b/rhbzquery.cabal
--- a/rhbzquery.cabal
+++ b/rhbzquery.cabal
@@ -1,5 +1,5 @@
 name:                rhbzquery
-version:             0.4.3
+version:             0.4.4
 synopsis:            Bugzilla query tool
 description:
         A CLI tool for creating bugzilla queries for bugzilla.redhat.com.
@@ -31,7 +31,7 @@
                        ParseArg
                        Paths_rhbzquery
                        User
-  build-depends:       base <5
+  build-depends:       base >=4.8 && <5
                      , bytestring
                      , config-ini
                      , directory
@@ -70,3 +70,4 @@
     ghc-options:   -Wall
     build-depends: base >= 4 && < 5
                  , simple-cmd
+    build-tools:   rhbzquery
diff --git a/src/Fields.hs b/src/Fields.hs
--- a/src/Fields.hs
+++ b/src/Fields.hs
@@ -4,10 +4,12 @@
   allBzFields,
   BzFields(..),
   argToFields,
-  argToSimpleField
+  argToSimpleField,
+  fieldAliases
   )
 where
 
+import Data.Maybe
 import Data.List.Extra as L
 import Data.Version
 import Numeric.Natural
@@ -88,19 +90,24 @@
     (major:_) ->  [(BzProduct, "Red Hat Enterprise Linux " ++ show major)
                   ,(BzVersion, showVersion ver)]
 
--- FIXME move map to allBzFields
+fieldAliases :: [(String,String)]
+fieldAliases =
+  [ ("arch", "rep_platform")
+  , ("platform", "rep_platform")
+  , ("flag", "flagtypes.name")
+  , ("flags", "flagtypes.name")
+  , ("itm", "cf_internal_target_milestone")
+  , ("itr", "cf_internal_target_release")
+  , ("sst", "agile_team.name")
+  , ("status", "bug_status")
+  , ("summary", "short_desc")
+  ]
+
 mapField :: String -> String
 mapField f =
   let longname =
-        case f of
-          "itm" -> "cf_internal_target_milestone"
-          "itr" -> "cf_internal_target_release"
-          "status" -> "bug_status"
-          "sst" -> "agile_team.name"
-          "summary" -> "short_desc"
-          "flag" -> "flagtypes.name"
-          "flags" -> "flagtypes.name"
-          p -> L.replace "-" "_" p
+        let norm = L.replace "-" "_" f
+        in fromMaybe norm $ lookup norm fieldAliases
   in if longname `elem` ("format":allBzFields)
      then longname
      else if "cf_" ++ longname `elem` allBzFields
diff --git a/src/Main.hs b/src/Main.hs
--- a/src/Main.hs
+++ b/src/Main.hs
@@ -11,6 +11,7 @@
 import Control.Monad.Extra
 import Data.Bifunctor
 import qualified Data.ByteString.Char8 as B
+import Data.List.Extra
 import Data.Maybe
 #if !MIN_VERSION_base(4,11,0)
 import Data.Monoid ((<>))
@@ -36,7 +37,7 @@
 import User
 
 data QueryMode = BugList | ListFields | ListOperators | CreateBug
-               | QueryPage | APIQuery
+               | QueryPage | APIQuery | Reverse
   deriving Eq
 
 main :: IO ()
@@ -51,16 +52,33 @@
      flagWith' ListOperators 'o' "list-operators" "List op search operator types" <|>
      flagWith' CreateBug 'f' "file" "File a bug" <|>
      flagWith' QueryPage 'q' "query" "Open advanced query page" <|>
+     flagWith' Reverse 'r' "reverse" "Convert url query to args" <|>
      flagWith BugList APIQuery 'w' "api" "Web API query") <*>
+    -- FIXME should really use some and many
     many (strArg argHelp)
   where
     run :: Bool -> Bool -> String -> QueryMode -> [String] -> IO ()
-    -- FIXME list aliases
-    run _ _ _ ListFields _ = mapM_ putStrLn allBzFields
+    run _ _ _ ListFields _ = do
+      mapM_ putStrLn allBzFields
+      putStrLn $ "\nAliases: " ++ unwords (map fst fieldAliases)
+      putStrLn "(also cf_ prefixes are optional)"
+
     run _ _ _ ListOperators _ =
       mapM_ putStrLn $ map showOpHelp operators ++
         ["", "content~ uses matches", "content!~ uses notmatches"]
-    -- FIXME should really use some and many
+    run _ _ _ Reverse [arg] =
+      let args = words $ map ampersandSpace $ removeURLPrefix arg
+      -- FIXME drop component= and uses aliases (summary), etc
+      in putStrLn $ unwords $ map renderStatus (filter (not . ("list_id=" `isPrefixOf`)) args)
+      where
+        ampersandSpace c =
+          if c == '&' then ' ' else c
+        removeURLPrefix url =
+          if '?' `elem` url then tail (dropWhile (/= '?') url) else url
+        renderStatus s =
+          if "bug_status=" `isPrefixOf` s
+          then lower $ dropPrefix "bug_status=" s
+          else s
     run _ _ _ _ [] = error' "please give an argument or --help"
     run dryrun mine server mode args = do
       user <-
@@ -94,6 +112,7 @@
         QueryPage -> "query.cgi"
         ListFields -> "query.cgi" -- unused
         ListOperators -> "query.cgi" -- unused
+        Reverse -> "query.cgi" -- unused
       <> renderQuery True (bzQuery query)
 
     hasStatusSet :: [ArgType] -> Bool
