Index: src/org/openstreetmap/josm/gui/history/HistoryBrowser.java
===================================================================
--- src/org/openstreetmap/josm/gui/history/HistoryBrowser.java	(revision 19007)
+++ src/org/openstreetmap/josm/gui/history/HistoryBrowser.java	(working copy)
@@ -11,6 +11,8 @@
 import javax.swing.JScrollPane;
 import javax.swing.JSplitPane;
 import javax.swing.JTabbedPane;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
 
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
@@ -22,7 +24,7 @@
  *
  * @since 1709
  */
-public class HistoryBrowser extends JPanel implements Destroyable {
+public class HistoryBrowser extends JPanel implements Destroyable, ChangeListener {
 
     /** the model */
     private transient HistoryBrowserModel model;
@@ -115,6 +117,7 @@
     public void populate(History history) {
         boolean samePrimitive = model.isSamePrimitive(history); // needs to be before setHistory
         model.setHistory(history);
+        model.addChangeListener(this);
         if (samePrimitive) {
             // no need to rebuild the UI
             return;
@@ -159,6 +162,7 @@
     public void destroy() {
         if (model != null) {
             model.unlinkAsListener();
+            model.removeChangeListener(this);
             model = null;
         }
         Stream.of(tagInfoViewer, nodeListViewer, relationMemberListViewer, coordinateInfoViewer)
@@ -168,4 +172,9 @@
         relationMemberListViewer = null;
         coordinateInfoViewer = null;
     }
+
+    @Override
+    public void stateChanged(ChangeEvent e) {
+        tagInfoViewer.adjustWidths();
+    }
 }
Index: src/org/openstreetmap/josm/gui/history/HistoryBrowserDialogManager.java
===================================================================
--- src/org/openstreetmap/josm/gui/history/HistoryBrowserDialogManager.java	(revision 19007)
+++ src/org/openstreetmap/josm/gui/history/HistoryBrowserDialogManager.java	(working copy)
@@ -18,6 +18,7 @@
 
 import javax.swing.JOptionPane;
 import javax.swing.SwingUtilities;
+import javax.swing.event.ChangeEvent;
 
 import org.openstreetmap.josm.data.osm.PrimitiveId;
 import org.openstreetmap.josm.data.osm.history.History;
@@ -147,6 +148,7 @@
             HistoryBrowserDialog dialog = new HistoryBrowserDialog(h);
             placeOnScreen(dialog);
             dialog.setVisible(true);
+            dialog.getHistoryBrowser().stateChanged(new ChangeEvent(this));
             dialogs.put(h.getId(), dialog);
         }
     }
Index: src/org/openstreetmap/josm/gui/history/TagInfoViewer.java
===================================================================
--- src/org/openstreetmap/josm/gui/history/TagInfoViewer.java	(revision 19007)
+++ src/org/openstreetmap/josm/gui/history/TagInfoViewer.java	(working copy)
@@ -35,6 +35,8 @@
  * @since 1709
  */
 public class TagInfoViewer extends HistoryViewerPanel {
+    private JTable reference;
+    private JTable current;
     private static final class RepaintOnFocusChange implements FocusListener {
         @Override
         public void focusLost(FocusEvent e) {
@@ -62,12 +64,14 @@
 
     @Override
     protected JTable buildReferenceTable() {
-        return buildTable(PointInTimeType.REFERENCE_POINT_IN_TIME);
+        reference = buildTable(PointInTimeType.REFERENCE_POINT_IN_TIME);
+        return reference;
     }
 
     @Override
     protected JTable buildCurrentTable() {
-        return buildTable(PointInTimeType.CURRENT_POINT_IN_TIME);
+        current = buildTable(PointInTimeType.CURRENT_POINT_IN_TIME);
+        return current;
     }
 
     private JTable buildTable(PointInTimeType pointInTime) {
@@ -105,4 +109,23 @@
         table.addMouseListener(new PopupMenuLauncher(tagMenu));
         return table;
     }
+
+    /**
+     * Use current data to adjust preferredWidth for both tables.
+     */
+    public void adjustWidths() {
+        // We have two tables with 3 columns each. no column should get more than 1/4 of the size
+        int maxWidth = this.getWidth() / 4;
+        if (maxWidth == 0)
+            maxWidth = Integer.MAX_VALUE;
+        adjustWidths(reference, maxWidth);
+        adjustWidths(current, maxWidth);
+    }
+
+    private static void adjustWidths(JTable table, int maxWidth) {
+        for (int column = 0; column < table.getColumnCount(); column++) {
+            TableHelper.adjustColumnWidth(table, column, maxWidth);
+        }
+    }
+
 }
Index: src/org/openstreetmap/josm/gui/history/TagTableColumnModel.java
===================================================================
--- src/org/openstreetmap/josm/gui/history/TagTableColumnModel.java	(revision 19007)
+++ src/org/openstreetmap/josm/gui/history/TagTableColumnModel.java	(working copy)
@@ -3,6 +3,7 @@
 
 import static org.openstreetmap.josm.tools.I18n.tr;
 
+import javax.swing.JLabel;
 import javax.swing.table.DefaultTableColumnModel;
 import javax.swing.table.TableColumn;
 
@@ -41,6 +42,7 @@
         col.setHeaderValue(tr("Since"));
         col.setCellRenderer(renderer);
         col.setPreferredWidth(10);
+        col.setMaxWidth(new JLabel("v" + Long.MAX_VALUE).getMinimumSize().width); // See #23482
         addColumn(col);
     }
 }
