diff --git a/common/drc_rules.keywords b/common/drc_rules.keywords
index a516ac08c0..a10cdc2702 100644
--- a/common/drc_rules.keywords
+++ b/common/drc_rules.keywords
@@ -35,4 +35,5 @@ silk_clearance
 skew
 diff_pair_gap
 diff_pair_uncoupled
-via_count
\ No newline at end of file
+via_count
+via_diameter
\ No newline at end of file
diff --git a/pcbnew/dialogs/panel_setup_rules.cpp b/pcbnew/dialogs/panel_setup_rules.cpp
index 5f4e597a96..21169d4ab2 100644
--- a/pcbnew/dialogs/panel_setup_rules.cpp
+++ b/pcbnew/dialogs/panel_setup_rules.cpp
@@ -256,7 +256,8 @@ void PANEL_SETUP_RULES::onScintillaCharAdded( wxStyledTextEvent &aEvent )
                      "silk_clearance "
                      "skew "
                      "track_width "
-                     "via_count ";
+                     "via_count "
+                     "via_diameter";
         }
         else if( sexprs.top() == "disallow"
               || sexprs.top() == "buried_via"
diff --git a/pcbnew/dialogs/panel_setup_rules_help.md b/pcbnew/dialogs/panel_setup_rules_help.md
index 357b30ba9f..e1e2dcb62e 100644
--- a/pcbnew/dialogs/panel_setup_rules_help.md
+++ b/pcbnew/dialogs/panel_setup_rules_help.md
@@ -34,6 +34,7 @@
  * skew
  * track\_width
  * via\_count
+ * via\_diameter
 
 
 <br><br>
diff --git a/pcbnew/drc/drc_rule_parser.cpp b/pcbnew/drc/drc_rule_parser.cpp
index fce3bd547d..2dd4b07017 100644
--- a/pcbnew/drc/drc_rule_parser.cpp
+++ b/pcbnew/drc/drc_rule_parser.cpp
@@ -256,7 +256,7 @@ void DRC_RULES_PARSER::parseConstraint( DRC_RULE* aRule )
     {
         msg.Printf( _( "Missing constraint type.|  Expected %s." ),
                     "clearance, hole_clearance, edge_clearance, hole, hole_to_hole, "
-                    "courtyard_clearance, silk_clearance, track_width, annular_width, "
+                    "courtyard_clearance, silk_clearance, track_width, annular_width, via_diameter, "
                     "disallow, length, skew, via_count, diff_pair_gap or diff_pair_uncoupled" );
         reportError( msg );
         return;
@@ -274,6 +274,7 @@ void DRC_RULES_PARSER::parseConstraint( DRC_RULE* aRule )
     case T_silk_clearance:            c.m_Type = SILK_CLEARANCE_CONSTRAINT;            break;
     case T_track_width:               c.m_Type = TRACK_WIDTH_CONSTRAINT;               break;
     case T_annular_width:             c.m_Type = ANNULAR_WIDTH_CONSTRAINT;             break;
+    case T_via_diameter:              c.m_Type = VIA_DIAMETER_CONSTRAINT;              break;
     case T_disallow:                  c.m_Type = DISALLOW_CONSTRAINT;                  break;
     case T_length:                    c.m_Type = LENGTH_CONSTRAINT;                    break;
     case T_skew:                      c.m_Type = SKEW_CONSTRAINT;                      break;
@@ -283,7 +284,7 @@ void DRC_RULES_PARSER::parseConstraint( DRC_RULE* aRule )
     default:
         msg.Printf( _( "Unrecognized item '%s'.| Expected %s." ), FromUTF8(),
                     "clearance, hole_clearance, edge_clearance, hole_size, hole_to_hole, "
-                    "courtyard_clearance, silk_clearance, track_width, annular_width, "
+                    "courtyard_clearance, silk_clearance, track_width, annular_width, via_diameter, "
                     "disallow, length, skew, diff_pair_gap or diff_pair_uncoupled." );
         reportError( msg );
     }