Index: trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java	(revision 16595)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java	(revision 16596)
@@ -195,4 +195,5 @@
             tagTable, editHelper::getDataKey, editHelper::getDataValues,
             membershipTable, x -> (IRelation<?>) membershipData.getValueAt(x, 0), null);
+    private final TaginfoAction tagHistoryAction = taginfoAction.toTagHistoryAction();
     private final Collection<TaginfoAction> taginfoNationalActions = new ArrayList<>();
     private final PasteValueAction pasteValueAction = new PasteValueAction();
@@ -457,4 +458,5 @@
         tagMenu.addSeparator();
         tagMenu.add(helpTagAction);
+        tagMenu.add(tagHistoryAction);
         tagMenu.add(taginfoAction);
         tagMenu.addPopupMenuListener(new AbstractTag2LinkPopupListener() {
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/properties/TaginfoAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/properties/TaginfoAction.java	(revision 16595)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/properties/TaginfoAction.java	(revision 16596)
@@ -27,8 +27,16 @@
 
     private static final StringProperty TAGINFO_URL_PROP = new StringProperty("taginfo.url", "https://taginfo.openstreetmap.org/");
+    private static final StringProperty TAG_HISTORY_URL_PROP = new StringProperty("taghistory.url", "https://taghistory.raifer.tech/#***");
 
     private final Supplier<Tag> tagSupplier;
     private final Supplier<String> relationTypeSupplier;
-    private final String taginfoUrl;
+    protected final String taginfoUrl;
+
+    private TaginfoAction(String name, Supplier<Tag> tagSupplier, Supplier<String> relationTypeSupplier, String taginfoUrl) {
+        super(name);
+        this.tagSupplier = tagSupplier;
+        this.relationTypeSupplier = relationTypeSupplier;
+        this.taginfoUrl = taginfoUrl;
+    }
 
     /**
@@ -85,10 +93,10 @@
         Tag tag = tagSupplier.get();
         if (tag != null) {
-            openTaginfoForTag(tag, taginfoUrl);
+            OpenBrowser.displayUrl(getTaginfoUrlForTag(tag));
             return;
         }
         String type = relationTypeSupplier.get();
         if (type != null) {
-            openTaginfoForRelationType(type, taginfoUrl);
+            OpenBrowser.displayUrl(getTaginfoUrlForRelationType(type));
         }
     }
@@ -98,5 +106,9 @@
             taginfoUrl = TAGINFO_URL_PROP.get();
         }
-        return taginfoUrl.endsWith("/") ? taginfoUrl : taginfoUrl + '/';
+        return withoutTrailingSlash(taginfoUrl);
+    }
+
+    private static String withoutTrailingSlash(String url) {
+        return Utils.strip(url, "/");
     }
 
@@ -104,13 +116,11 @@
      * Opens Taginfo for the given tag or key (if the tag value is null)
      * @param tag the tag
-     * @param taginfoUrl Taginfo URL (may be null)
-     * @since 16275
+     * @since 16596
      */
-    public static void openTaginfoForTag(Tag tag, String taginfoUrl) {
-        taginfoUrl = getTaginfoUrl(taginfoUrl);
+    public String getTaginfoUrlForTag(Tag tag) {
         if (tag.getValue().isEmpty()) {
-            OpenBrowser.displayUrl(taginfoUrl + "keys/" + tag.getKey());
+            return taginfoUrl + "/keys/" + tag.getKey();
         } else {
-            OpenBrowser.displayUrl(taginfoUrl + "tags/" + tag.getKey() + '=' + Utils.encodeUrl(tag.getValue()).replaceAll("\\+", "%20"));
+            return taginfoUrl + "/tags/" + tag.getKey() + '=' + Utils.encodeUrl(tag.getValue()).replaceAll("\\+", "%20");
         }
     }
@@ -119,10 +129,28 @@
      * Opens Taginfo for the given relation type
      * @param type the relation type
-     * @param taginfoUrl Taginfo URL (may be null)
-     * @since 16275
+     * @since 16596
      */
-    public static void openTaginfoForRelationType(String type, String taginfoUrl) {
-        taginfoUrl = getTaginfoUrl(taginfoUrl);
-        OpenBrowser.displayUrl(taginfoUrl + "relations/" + type);
+    public String getTaginfoUrlForRelationType(String type) {
+        return taginfoUrl + "/relations/" + type;
+    }
+
+    /**
+     * Returns a new action which launches https://taghistory.raifer.tech/ for the given tag
+     * @return a new action
+     * @since 16596
+     */
+    public TaginfoAction toTagHistoryAction() {
+        String url = withoutTrailingSlash(TAG_HISTORY_URL_PROP.get());
+        return new TaginfoAction(tr("Go to OSM Tag History"), tagSupplier, relationTypeSupplier, url) {
+            @Override
+            public String getTaginfoUrlForTag(Tag tag) {
+                return String.join("/", taginfoUrl, tag.getKey(), tag.getValue());
+            }
+
+            @Override
+            public String getTaginfoUrlForRelationType(String type) {
+                return null;
+            }
+        };
     }
 }
Index: trunk/src/org/openstreetmap/josm/gui/history/TagInfoViewer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/history/TagInfoViewer.java	(revision 16595)
+++ trunk/src/org/openstreetmap/josm/gui/history/TagInfoViewer.java	(revision 16596)
@@ -100,5 +100,7 @@
         tagMenu.addSeparator();
         tagMenu.add(trackJosmAction(new HelpTagAction(table, tagKeyFn, tagValuesFn)));
-        tagMenu.add(trackJosmAction(new TaginfoAction(tr("Go to Taginfo"), table, tagKeyFn, tagValuesFn, null, null, null)));
+        TaginfoAction taginfoAction = new TaginfoAction(tr("Go to Taginfo"), table, tagKeyFn, tagValuesFn, null, null, null);
+        tagMenu.add(trackJosmAction(taginfoAction.toTagHistoryAction()));
+        tagMenu.add(trackJosmAction(taginfoAction));
 
         table.addMouseListener(new PopupMenuLauncher(tagMenu));
Index: trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/KeyedItem.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/KeyedItem.java	(revision 16595)
+++ trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/KeyedItem.java	(revision 16596)
@@ -214,5 +214,7 @@
         popupMenu.add(tr("Key: {0}", key)).setEnabled(false);
         popupMenu.add(new HelpTagAction(() -> tag));
-        popupMenu.add(new TaginfoAction(() -> tag, () -> null));
+        TaginfoAction taginfoAction = new TaginfoAction(() -> tag, () -> null);
+        popupMenu.add(taginfoAction.toTagHistoryAction());
+        popupMenu.add(taginfoAction);
         return popupMenu;
     }
