diff --git a/url.bs b/url.bs
index 7930bc4d..f1a4a0b3 100644
--- a/url.bs
+++ b/url.bs
@@ -25,7 +25,7 @@ Boilerplate: omit feedback-header
 
 <ul>
  <li><p>Align RFC 3986 and RFC 3987 with contemporary implementations and
- obsolete them in the process. (E.g. spaces, other "illegal" code points,
+ obsolete them in the process. (E.g., spaces, other "illegal" code points,
  query encoding, equality, canonicalization, are all concepts not entirely
  shared, or defined.) URL parsing needs to become as solid as HTML parsing.
  [[RFC3986]]
@@ -64,7 +64,6 @@ DOM, Encoding, IDNA, and Web IDL Standards.
 <p>The <dfn>C0 controls and space</dfn> are <a>C0 controls</a> and code point U+0020.
 
 <p>The <dfn>ASCII digits</dfn> are code points in the range U+0030 to U+0039, inclusive.
-<!-- XXX ref Encoding? -->
 
 <p>The <dfn>ASCII hex digits</dfn> are <a>ASCII digits</a>, code points in the range
 U+0041 to U+0046, inclusive, and code points in the range U+0061 to U+0066, inclusive.
@@ -99,10 +98,6 @@ the second code point is "<code>:</code>".
 <p>The <dfn>EOF code point</dfn> is a conceptual code point that signifies the end of a
 string or code point stream.
 
-<p>A <dfn>parse error</dfn> indicates a non-fatal mismatch between input and requirements.
-User agents are encouraged to expose <a lt="parse error">parse errors</a>
-somehow.
-
 <p>Within a parser algorithm that uses a <var>pointer</var> variable, <dfn>c</dfn>
 references the code point the <var>pointer</var> variable points to.
 
@@ -115,6 +110,14 @@ processed and <var>pointer</var> points to "<code>@</code>",
 <a>c</a> is "<code>@</code>" and <a>remaining</a> is
 "<code>example</code>".
 
+<p>A <dfn>syntax violation</dfn> indicates a non-fatal mismatch between input and syntax
+requirements. User agents, especially conformance checkers are encouraged to report them
+somewhere.
+
+<p class="note no-backref">A <a>syntax violation</a> does not mean that the parser
+terminates. Termination of a parser is always stated explicitly. E.g., through a return
+statement.
+
 
 
 <h2 id=percent-encoded-bytes>Percent-encoded bytes</h2>
@@ -261,7 +264,7 @@ eight <dfn id=concept-ipv6-piece lt='IPv6 piece'>16-bit pieces</dfn>.
  <i>UseSTD3ASCIIRules</i> set to false, <i>processing_option</i> set to
  <i>Transitional_Processing</i>, and <i>VerifyDnsLength</i> set to false.
 
- <li><p>If <var>result</var> is a failure value, <a>parse error</a>, return failure.
+ <li><p>If <var>result</var> is a failure value, <a>syntax violation</a>, return failure.
 
  <li><p>Return <var>result</var>.
 </ol>
@@ -275,7 +278,7 @@ eight <dfn id=concept-ipv6-piece lt='IPv6 piece'>16-bit pieces</dfn>.
  <i>domain_name</i> set to <var>domain</var>,
  <i>UseSTD3ASCIIRules</i> set to false.
 
- <li><p>Signify <a>parse errors</a> any returned errors, and then, return
+ <li><p>Signify <a>syntax violations</a> for any returned errors, and then, return
  <var>result</var>.
 </ol>
 
@@ -338,7 +341,7 @@ steps:
 
   <ol>
    <li><p>If <var>input</var> does not end with
-   "<code>]</code>", <a>parse error</a>, return failure.
+   "<code>]</code>", <a>syntax violation</a>, return failure.
 
    <li><p>Return the result of
    <a lt="IPv6 parser">IPv6 parsing</a> <var>input</var>
@@ -374,7 +377,7 @@ steps:
   "<code>\</code>",<!-- 5C -->
   and
   "<code>]</code>",<!-- 5D -->
-  <a>parse error</a>, return failure.
+  <a>syntax violation</a>, return failure.
 
  <li><p>Let <var>ipv4Host</var> be the result of <a lt="IPv4 parser">IPv4 parsing</a>
  <var>asciiDomain</var>.
@@ -458,11 +461,11 @@ runs these steps:
   </ol>
 
  <li><p>If any but the last item in <var>numbers</var> is greater than 255,
- <a>parse error</a> return failure.
+ <a>syntax violation</a> return failure.
 
  <li><p>If the last item in <var>numbers</var> is greater than or equal to
  256<sup>(5 &minus; the number of items in <var>numbers</var>)</sup>,
- <a>parse error</a>, return failure.
+ <a>syntax violation</a>, return failure.
 
  <li><p>Let <var>ipv4</var> be the last item in <var>numbers</var>.
 
@@ -509,8 +512,8 @@ then runs these steps:
   <p>If <a>c</a> is "<code>:</code>", run these substeps:
 
   <ol>
-   <li><p>If <a>remaining</a> does not start with
-   "<code>:</code>", <a>parse error</a>, return failure.
+   <li><p>If <a>remaining</a> does not start with "<code>:</code>",
+   <a>syntax violation</a>, return failure.
 
    <li><p>Increase <var>pointer</var> by two.
 
@@ -524,16 +527,15 @@ then runs these steps:
   substeps:
 
   <ol>
-   <li><p>If <var>piece pointer</var> is eight,
-   <a>parse error</a>, return failure.
+   <li><p>If <var>piece pointer</var> is eight, <a>syntax violation</a>, return failure.
 
    <li>
     <p>If <a>c</a> is "<code>:</code>", run these inner
     substeps:
 
     <ol>
-     <li><p>If <var>compress pointer</var> is non-null,
-     <a>parse error</a>, return failure.
+     <li><p>If <var>compress pointer</var> is non-null, <a>syntax violation</a>,
+     return failure.
 
      <li>Increase <var>pointer</var> and <var>piece pointer</var> by one, set
      <var>compress pointer</var> to <var>piece pointer</var>,
@@ -550,24 +552,30 @@ then runs these steps:
    and increase <var>pointer</var> and <var>length</var> by one.
 
    <li>
-    <p>Based on <a>c</a>:
+    <p>Switching on <a>c</a>:
 
     <dl class=switch>
      <dt>"<code>.</code>"
      <dd>
-      <p>If <var>length</var> is 0, <a>parse error</a>,
-      return failure.
-      <p>Decrease <var>pointer</var> by <var>length</var>.
-      <p>Jump to <a lt='IPv6 parser IPv4'>IPv4</a>.
+      <ol>
+       <li><p>If <var>length</var> is 0, <a>syntax violation</a>, return failure.
+
+       <li><p>Decrease <var>pointer</var> by <var>length</var>.
+
+       <li><p>Jump to <a lt='IPv6 parser IPv4'>IPv4</a>.
+      </ol>
 
      <dt>"<code>:</code>"
      <dd>
-      <p>Increase <var>pointer</var> by one.
-      <p>If <a>c</a> is the <a>EOF code point</a>,
-      <a>parse error</a>, return failure.
+      <ol>
+       <li><p>Increase <var>pointer</var> by one.
+
+       <li><p>If <a>c</a> is the <a>EOF code point</a>, <a>syntax violation</a>,
+       return failure.
+      </ol>
 
      <dt>Anything but the <a>EOF code point</a>
-     <dd><p><a>Parse error</a>, return failure.
+     <dd><p><a>Syntax violation</a>, return failure.
     </dl>
 
    <li><p>Set <var>piece</var> to <var>value</var>.
@@ -579,8 +587,7 @@ then runs these steps:
  <a lt='IPv6 parser Finale'>Finale</a>.
 
  <li><p><dfn id=concept-ipv6-parser-ipv4 lt='IPv6 parser IPv4'>IPv4</dfn>:
- If <var>piece pointer</var> is greater than six,
- <a>parse error</a>, return failure.
+ If <var>piece pointer</var> is greater than six, <a>syntax violation</a>, return failure.
 
  <li><p>Let <var>dots seen</var> be 0.
 
@@ -591,12 +598,11 @@ then runs these steps:
   <ol>
    <li><p>Let <var>value</var> be null.
 
-   <li><p>If <a>c</a> is not an <a lt="ASCII digits">ASCII digit</a>,
-   <a>parse error</a>, return failure. <!-- prevent the empty string -->
+   <li><p>If <a>c</a> is not an <a>ASCII digit</a>, <a>syntax violation</a>,
+   return failure. <!-- prevent the empty string -->
 
    <li>
-    <p>While <a>c</a> is an
-    <a lt="ASCII digits">ASCII digit</a>, run these subsubsteps:
+    <p>While <a>c</a> is an <a>ASCII digit</a>, run these subsubsteps:
 
     <ol>
      <li><p>Let <var>number</var> be <a>c</a> interpreted as decimal number.
@@ -604,19 +610,19 @@ then runs these steps:
      <li>
       <p>If <var>value</var> is null, set <var>value</var> to <var>number</var>.
 
-      <p>Otherwise, if <var>value</var> is 0, <a>parse error</a>, return failure.
+      <p>Otherwise, if <var>value</var> is 0, <a>syntax violation</a>, return failure.
 
       <p>Otherwise, set <var>value</var> to <var>value</var> &times; 10 + <var>number</var>.
 
      <li><p>Increase <var>pointer</var> by one.
 
-     <li><p>If <var>value</var> is greater than 255, <a>parse error</a>,
+     <li><p>If <var>value</var> is greater than 255, <a>syntax violation</a>,
      return failure.
     </ol>
 
    <li><p>If <var>dots seen</var> is less than 3 and
    <a>c</a> is not a "<code>.</code>",
-   <a>parse error</a>, return failure.
+   <a>syntax violation</a>, return failure.
 
    <li><p>Set <var>piece</var> to
    <var>piece</var> &times; 0x100 + <var>value</var>.
@@ -629,7 +635,7 @@ then runs these steps:
 
    <li><p>If <var>dots seen</var> is 3 and <a>c</a> is not
    the <a>EOF code point</a>,
-   <a>parse error</a>, return failure.
+   <a>syntax violation</a>, return failure.
 
    <li><p>Increase <var>dots seen</var> by one.
   </ol>
@@ -651,9 +657,8 @@ then runs these steps:
    decrease both <var>piece pointer</var> and <var>swaps</var> by one.
   </ol>
 
- <li><p>Otherwise, if <var>compress pointer</var> is null and
- <var>piece pointer</var> is not eight, <a>parse error</a>,
- return failure.
+ <li><p>Otherwise, if <var>compress pointer</var> is null and <var>piece pointer</var> is
+ not eight, <a>syntax violation</a>, return failure.
 
  <li><p>Return <var>address</var>.
 </ol>
@@ -973,8 +978,6 @@ U+100000 to U+10FFFD.
 
 <h3 id=url-parsing>URL parsing</h3>
 
-<p class=XXX>Add the ability to halt on the first conformance error.
-
 <p>The <dfn id=concept-url-parser lt="URL parser">URL parser</dfn> takes a string
 <var>input</var>, with an optional <a>base URL</a> <var>base</var> and an optional
 <a>encoding</a> <var>encoding override</var>, and then runs these steps:
@@ -1032,7 +1035,7 @@ optionally with an <a>encoding</a>
    <li><p>Set <var>url</var> to a new <a>URL</a>.
 
    <li><p>If <var>input</var> contains any leading or trailing
-   <a>C0 controls and space</a>, <a>parse error</a>.
+   <a>C0 controls and space</a>, <a>syntax violation</a>.
 
    <li><p>Remove any leading and trailing <a>C0 controls and space</a> from
    <var>input</var>.
@@ -1072,7 +1075,7 @@ optionally with an <a>encoding</a>
      <var>state</var> to <a>no scheme state</a>, and decrease
      <var>pointer</var> by one.
 
-     <li><p>Otherwise, <a>parse error</a>, terminate this algorithm.
+     <li><p>Otherwise, <a>syntax violation</a>, terminate this algorithm.
     </ol>
 
    <dt><dfn>scheme state</dfn>
@@ -1128,14 +1131,14 @@ optionally with an <a>encoding</a>
      <a>no scheme state</a>, and start over (from the first code point
      in <var>input</var>).
 
-     <li><p>Otherwise, <a>parse error</a>, terminate this algorithm.
+     <li><p>Otherwise, <a>syntax violation</a>, terminate this algorithm.
     </ol>
 
    <dt><dfn>no scheme state</dfn>
    <dd>
     <ol>
      <li><p>If <var>base</var> is null, or <var>base</var>'s <a>non-relative flag</a> is
-     set and <a>c</a> is not "<code>#</code>", <a>parse error</a>, return failure.
+     set and <a>c</a> is not "<code>#</code>", <a>syntax violation</a>, return failure.
 
      <li><p>Otherwise, if <var>base</var>'s <a>non-relative flag</a> is set and <a>c</a>
      is "<code>#</code>", set <var>url</var>'s <a for=URL>scheme</a> to
@@ -1163,9 +1166,8 @@ optionally with an <a>encoding</a>
     <var>state</var> to <a>special authority ignore slashes state</a>
     and increase <var>pointer</var> by one.
 
-    <p>Otherwise, <a>parse error</a>, set <var>state</var> to
-    <a>relative state</a> and decrease <var>pointer</var> by
-    one.
+    <p>Otherwise, <a>syntax violation</a>, set <var>state</var> to <a>relative state</a>
+    and decrease <var>pointer</var> by one.
 
    <dt><dfn>path or authority state</dfn>
    <dd>
@@ -1177,7 +1179,7 @@ optionally with an <a>encoding</a>
    <dt><dfn>relative state</dfn>
    <dd>
     <p>Set <var>url</var>'s <a for=URL>scheme</a> to
-    <var>base</var>'s <a for=URL>scheme</a>, and then, based on <a>c</a>:
+    <var>base</var>'s <a for=URL>scheme</a>, and then, switching on <a>c</a>:
 
     <dl class=switch>
      <dt><a>EOF code point</a>
@@ -1230,7 +1232,7 @@ optionally with an <a>encoding</a>
      <dt>Otherwise
      <dd>
       <p>If <var>url</var> <a>is special</a> and <a>c</a> is "<code>\</code>",
-      <a>parse error</a>, set <var>state</var> to <a>relative slash state</a>.
+      <a>syntax violation</a>, set <var>state</var> to <a>relative slash state</a>.
 
       <p>Otherwise, run these steps:
 
@@ -1260,7 +1262,7 @@ optionally with an <a>encoding</a>
       <a>c</a> is "<code>\</code>", run these substeps:
 
       <ol>
-       <li><p>If <a>c</a> is "<code>\</code>", <a>parse error</a>.
+       <li><p>If <a>c</a> is "<code>\</code>", <a>syntax violation</a>.
 
        <li><p>Set <var>state</var> to <a>special authority ignore slashes state</a>.
       </ol>
@@ -1283,7 +1285,7 @@ optionally with an <a>encoding</a>
     set <var>state</var> to <a>special authority ignore slashes state</a>, and increase
     <var>pointer</var> by one.
 
-    <p>Otherwise, <a>parse error</a>, set <var>state</var> to
+    <p>Otherwise, <a>syntax violation</a>, set <var>state</var> to
     <a>special authority ignore slashes state</a>, and decrease <var>pointer</var> by one.
 
    <dt><dfn>special authority ignore slashes state</dfn>
@@ -1291,7 +1293,7 @@ optionally with an <a>encoding</a>
     <p>If <a>c</a> is neither "<code>/</code>" nor "<code>\</code>", set <var>state</var>
     to <a>authority state</a>, and decrease <var>pointer</var> by one.
 
-    <p>Otherwise, <a>parse error</a>.
+    <p>Otherwise, <a>syntax violation</a>.
 
    <dt><dfn>authority state</dfn>
    <dd>
@@ -1300,7 +1302,7 @@ optionally with an <a>encoding</a>
       <p>If <a>c</a> is "<code>@</code>", run these substeps:
 
       <ol>
-       <li><p><a>Parse error</a>.
+       <li><p><a>Syntax violation</a>.
 
        <li><p>If the <var>@ flag</var> is set, prepend "<code>%40</code>" to
        <var>buffer</var>.
@@ -1395,8 +1397,7 @@ optionally with an <a>encoding</a>
        algorithm.
       </ol>
 
-     <li><p>Otherwise, if <a>c</a> is U+0009, U+000A, or U+000D,
-     <a>parse error</a>.
+     <li><p>Otherwise, if <a>c</a> is U+0009, U+000A, or U+000D, <a>syntax violation</a>.
 
      <li>
       <p>Otherwise, run these substeps:
@@ -1415,8 +1416,7 @@ optionally with an <a>encoding</a>
    <dt><dfn>port state</dfn>
    <dd>
     <ol>
-     <li><p>If <a>c</a> is an <a lt="ASCII digits">ASCII digit</a>,
-     append <a>c</a> to <var>buffer</var>.
+     <li><p>If <a>c</a> is an <a>ASCII digit</a>, append <a>c</a> to <var>buffer</var>.
 
      <li>
       <p>Otherwise, if <a>c</a> is one of <a>EOF code point</a>, "<code>/</code>",
@@ -1430,7 +1430,7 @@ optionally with an <a>encoding</a>
        0 through 9.
 
        <li><p>If <var>port</var> is greater than 2<sup>16</sup>&nbsp;&minus;&nbsp;1,
-       <a>parse error</a>, return failure.
+       <a>syntax violation</a>, return failure.
 
        <li><p>Set <var>url</var>'s <a for=URL>port</a> to null, if <var>port</var> is
        <var>url</var>'s <a for=URL>scheme</a>'s <a>default port</a>, and to
@@ -1443,16 +1443,15 @@ optionally with an <a>encoding</a>
        <a>path start state</a>, and decrease <var>pointer</var> by one.
       </ol>
 
-     <li><p>Otherwise, if <a>c</a> is U+0009, U+000A, or U+000D,
-     <a>parse error</a>.
+     <li><p>Otherwise, if <a>c</a> is U+0009, U+000A, or U+000D, <a>syntax violation</a>.
 
-     <li><p>Otherwise, <a>parse error</a>, return failure.
+     <li><p>Otherwise, <a>syntax violation</a>, return failure.
     </ol>
 
    <dt><dfn>file state</dfn>
    <dd>
     <p>Set <var>url</var>'s <a for=URL>scheme</a> to "<code>file</code>",
-    and then, based on <a>c</a>:
+    and then, switching on <a>c</a>:
 
     <dl class=switch>
      <dt><a>EOF code point</a>
@@ -1469,7 +1468,7 @@ optionally with an <a>encoding</a>
      <dt>"<code>\</code>"
      <dd>
       <ol>
-       <li><p>If <a>c</a> is "<code>\</code>", <a>parse error</a>.
+       <li><p>If <a>c</a> is "<code>\</code>", <a>syntax violation</a>.
 
        <li><p>Set <var>state</var> to <a>file slash state</a>.
       </ol>
@@ -1525,7 +1524,7 @@ optionally with an <a>encoding</a>
       <p>If <a>c</a> is "<code>/</code>" or "<code>\</code>", run these substeps:
 
       <ol>
-       <li><p>If <a>c</a> is "<code>\</code>", <a>parse error</a>.
+       <li><p>If <a>c</a> is "<code>\</code>", <a>syntax violation</a>.
 
        <li><p>Set <var>state</var> to <a>file host state</a>.
       </ol>
@@ -1588,8 +1587,7 @@ optionally with an <a>encoding</a>
         </ol>
       </ol>
 
-     <li><p>Otherwise, if <a>c</a> is U+0009, U+000A, or U+000D,
-     <a>parse error</a>.
+     <li><p>Otherwise, if <a>c</a> is U+0009, U+000A, or U+000D, <a>syntax violation</a>.
 
      <li><p>Otherwise, append <a>c</a> to <var>buffer</var>.
     </ol>
@@ -1598,7 +1596,7 @@ optionally with an <a>encoding</a>
    <dd>
     <ol>
      <li><p>If <var>url</var> <a>is special</a> and <a>c</a> is "<code>\</code>",
-     <a>parse error</a>.
+     <a>syntax violation</a>.
 
      <li><p>Set <var>state</var> to <a>path state</a>, and if neither <a>c</a> is
      "<code>/</code>", nor <var>url</var> <a>is special</a> and <a>c</a> is
@@ -1614,7 +1612,7 @@ optionally with an <a>encoding</a>
       not given and <a>c</a> is "<code>?</code>" or "<code>#</code>", run these substeps:
       <ol>
        <li><p>If <var>url</var> <a>is special</a> and <a>c</a> is "<code>\</code>",
-       <a>parse error</a>.
+       <a>syntax violation</a>.
 
        <li>
         <p>If <var>buffer</var>, <a lt="ASCII lowercase">lowercased</a>, matches any row
@@ -1667,8 +1665,7 @@ optionally with an <a>encoding</a>
        and <var>state</var> to <a>fragment state</a>.
       </ol>
 
-     <li><p>Otherwise, if <a>c</a> is U+0009, U+000A, or U+000D,
-     <a>parse error</a>.
+     <li><p>Otherwise, if <a>c</a> is U+0009, U+000A, or U+000D, <a>syntax violation</a>.
 
      <li>
       <p>Otherwise, run these steps:
@@ -1676,10 +1673,10 @@ optionally with an <a>encoding</a>
       <ol>
        <li><p>If <a>c</a> is not a
        <a lt="URL code points">URL code point</a> and not "<code>%</code>",
-       <a>parse error</a>.
+       <a>syntax violation</a>.
 
        <li><p>If <a>c</a> is "<code>%</code>" and <a>remaining</a> does
-       not start with two <a>ASCII hex digits</a>, <a>parse error</a>.
+       not start with two <a>ASCII hex digits</a>, <a>syntax violation</a>.
 
        <li><p><a>utf-8 percent encode</a> <a>c</a> using the
        <a>default encode set</a>, and append the result to
@@ -1704,10 +1701,10 @@ optionally with an <a>encoding</a>
       <ol>
        <li><p>If <a>c</a> is not the <a>EOF code point</a>, not a
        <a lt="URL code points">URL code point</a>, and not
-       "<code>%</code>", <a>parse error</a>.
+       "<code>%</code>", <a>syntax violation</a>.
 
        <li><p>If <a>c</a> is "<code>%</code>" and <a>remaining</a> does
-       not start with two <a>ASCII hex digits</a>, <a>parse error</a>.
+       not start with two <a>ASCII hex digits</a>, <a>syntax violation</a>.
 
        <li><p>If <a>c</a> is none of
        <a>EOF code point</a>, U+0009, U+000A, and U+000D,
@@ -1757,8 +1754,7 @@ optionally with an <a>encoding</a>
        and state to <a>fragment state</a>.
       </ol>
 
-     <li><p>Otherwise, if <a>c</a> is U+0009, U+000A, or U+000D,
-     <a>parse error</a>.
+     <li><p>Otherwise, if <a>c</a> is U+0009, U+000A, or U+000D, <a>syntax violation</a>.
 
      <li>
       <p>Otherwise, run these substeps:
@@ -1766,10 +1762,10 @@ optionally with an <a>encoding</a>
       <ol>
        <li><p>If <a>c</a> is not a
        <a lt="URL code points">URL code point</a> and not "<code>%</code>",
-       <a>parse error</a>.
+       <a>syntax violation</a>.
 
        <li><p>If <a>c</a> is "<code>%</code>" and <a>remaining</a> does
-       not start with two <a>ASCII hex digits</a>, <a>parse error</a>.
+       not start with two <a>ASCII hex digits</a>, <a>syntax violation</a>.
 
        <li><p>Append <a>c</a> to <var>buffer</var>.
       </ol>
@@ -1777,7 +1773,7 @@ optionally with an <a>encoding</a>
 
    <dt><dfn>fragment state</dfn>
    <dd>
-    <p>Based on <a>c</a>:
+    <p>Switching on <a>c</a>:
     <dl class=switch>
      <dt><a>EOF code point</a>
      <dd><p>Do nothing.
@@ -1786,16 +1782,16 @@ optionally with an <a>encoding</a>
      <dt>U+0009
      <dt>U+000A
      <dt>U+000D
-     <dd><p><a>Parse error</a>.
+     <dd><p><a>Syntax violation</a>.
 
      <dt>Otherwise
      <dd>
       <ol>
        <li><p>If <a>c</a> is not a <a lt="URL code points">URL code point</a> and not
-       "<code>%</code>", <a>parse error</a>.
+       "<code>%</code>", <a>syntax violation</a>.
 
        <li><p>If <a>c</a> is "<code>%</code>" and <a>remaining</a> does
-       not start with two <a>ASCII hex digits</a>, <a>parse error</a>.
+       not start with two <a>ASCII hex digits</a>, <a>syntax violation</a>.
 
        <li>
         <p>Append <a>c</a> to <var>url</var>'s <a for=URL>fragment</a>.
@@ -2956,9 +2952,9 @@ are meant for <a for=URL>URL</a> manipulation. In IDL the USVString type should
 data structures.
 
 <p>If a standard decides to use a variant of the name "URL" for a feature it defines, it
-should name such a feature "url" (i.e. lowercase and with an "l" at the end). Names such
+should name such a feature "url" (i.e., lowercase and with an "l" at the end). Names such
 as "URL", "URI", and "IRI" should not be used. However, if the name is a compound, "URL"
-(i.e. uppercase) is preferred, e.g. "newURL" and "oldURL".
+(i.e., uppercase) is preferred, e.g., "newURL" and "oldURL".
 
 <p class=note>The {{EventSource}} and
 {{HashChangeEvent}} interfaces in HTML are examples of
@@ -2982,6 +2978,7 @@ Arkadiusz Michalski,
 Behnam Esfahbod,
 Bobby Holley,
 Boris Zbarsky,
+Brad Hill,
 Brandon Ross,
 Chris Rebert,
 Dan Appelquist,
diff --git a/url.html b/url.html
index f66357ed..bedbff8e 100644
--- a/url.html
+++ b/url.html
@@ -30,7 +30,7 @@
    <h1 class="p-name no-ref allcaps" id="title">URL</h1>
   
    <h2 class="no-num no-toc no-ref heading settled" id="subtitle"><span class="content">Living Standard — Last Updated
-    <time class="dt-updated" datetime="2015-08-14">14 August 2015</time></span></h2>
+    <time class="dt-updated" datetime="2015-08-15">15 August 2015</time></span></h2>
   
    <div data-fill-with="spec-metadata">
     <dl>
@@ -137,7 +137,7 @@ <h2 class="no-num heading settled" id="goals"><span class="content">Goals</span>
  
     <li>
      <p>Align RFC 3986 and RFC 3987 with contemporary implementations and
- obsolete them in the process. (E.g. spaces, other "illegal" code points,
+ obsolete them in the process. (E.g., spaces, other "illegal" code points,
  query encoding, equality, canonicalization, are all concepts not entirely
  shared, or defined.) URL parsing needs to become as solid as HTML parsing.
  <a data-link-type="biblio" href="#biblio-rfc3986">[RFC3986]</a>
@@ -189,7 +189,6 @@ <h2 class="heading settled" data-level="1" id="terminology"><span class="secno">
 </p>
    <p>The <dfn data-dfn-type="dfn" data-noexport="" id="ascii-digits">ASCII digits<a class="self-link" href="#ascii-digits"></a></dfn> are code points in the range U+0030 to U+0039, inclusive.
 
-
 </p>
    <p>The <dfn data-dfn-type="dfn" data-noexport="" id="ascii-hex-digits">ASCII hex digits<a class="self-link" href="#ascii-hex-digits"></a></dfn> are <a data-link-type="dfn" href="#ascii-digits">ASCII digits</a>, code points in the range
 U+0041 to U+0046, inclusive, and code points in the range U+0061 to U+0066, inclusive.
@@ -235,11 +234,6 @@ <h3 class="heading settled" data-level="1.1" id="parsers"><span class="secno">1.
    <p>The <dfn data-dfn-type="dfn" data-noexport="" id="eof-code-point">EOF code point<a class="self-link" href="#eof-code-point"></a></dfn> is a conceptual code point that signifies the end of a
 string or code point stream.
 
-</p>
-   <p>A <dfn data-dfn-type="dfn" data-noexport="" id="parse-error">parse error<a class="self-link" href="#parse-error"></a></dfn> indicates a non-fatal mismatch between input and requirements.
-User agents are encouraged to expose <a data-link-type="dfn" href="#parse-error">parse errors</a>
-somehow.
-
 </p>
    <p>Within a parser algorithm that uses a <var>pointer</var> variable, <dfn data-dfn-type="dfn" data-noexport="" id="c">c<a class="self-link" href="#c"></a></dfn>
 references the code point the <var>pointer</var> variable points to.
@@ -255,6 +249,16 @@ <h3 class="heading settled" data-level="1.1" id="parsers"><span class="secno">1.
 <a data-link-type="dfn" href="#c">c</a> is "<code>@</code>" and <a data-link-type="dfn" href="#remaining">remaining</a> is
 "<code>example</code>".
 
+</p>
+   <p>A <dfn data-dfn-type="dfn" data-noexport="" id="syntax-violation">syntax violation<a class="self-link" href="#syntax-violation"></a></dfn> indicates a non-fatal mismatch between input and syntax
+requirements. User agents, especially conformance checkers are encouraged to report them
+somewhere.
+
+</p>
+   <p class="note no-backref" role="note">A <a data-link-type="dfn" href="#syntax-violation">syntax violation</a> does not mean that the parser
+terminates. Termination of a parser is always stated explicitly. E.g., through a return
+statement.
+
 
 
 </p>
@@ -449,7 +453,7 @@ <h3 class="heading settled" data-level="3.1" id="idna"><span class="secno">3.1.
 
  </p>
     <li>
-     <p>If <var>result</var> is a failure value, <a data-link-type="dfn" href="#parse-error">parse error</a>, return failure.
+     <p>If <var>result</var> is a failure value, <a data-link-type="dfn" href="#syntax-violation">syntax violation</a>, return failure.
 
  </p>
     <li>
@@ -471,7 +475,7 @@ <h3 class="heading settled" data-level="3.1" id="idna"><span class="secno">3.1.
 
  </p>
     <li>
-     <p>Signify <a data-link-type="dfn" href="#parse-error">parse errors</a> any returned errors, and then, return
+     <p>Signify <a data-link-type="dfn" href="#syntax-violation">syntax violations</a> for any returned errors, and then, return
  <var>result</var>.
 </p></ol>
 
@@ -557,7 +561,7 @@ <h3 class="heading settled" data-level="3.3" id="host-parsing"><span class="secn
    
       <li>
        <p>If <var>input</var> does not end with
-   "<code>]</code>", <a data-link-type="dfn" href="#parse-error">parse error</a>, return failure.
+   "<code>]</code>", <a data-link-type="dfn" href="#syntax-violation">syntax violation</a>, return failure.
 
    </p>
       <li>
@@ -605,7 +609,7 @@ <h3 class="heading settled" data-level="3.3" id="host-parsing"><span class="secn
   "<code>\</code>",
   and
   "<code>]</code>",
-  <a data-link-type="dfn" href="#parse-error">parse error</a>, return failure.
+  <a data-link-type="dfn" href="#syntax-violation">syntax violation</a>, return failure.
 
  </p>
     <li>
@@ -749,13 +753,13 @@ <h3 class="heading settled" data-level="3.3" id="host-parsing"><span class="secn
  
     <li>
      <p>If any but the last item in <var>numbers</var> is greater than 255,
- <a data-link-type="dfn" href="#parse-error">parse error</a> return failure.
+ <a data-link-type="dfn" href="#syntax-violation">syntax violation</a> return failure.
 
  </p>
     <li>
      <p>If the last item in <var>numbers</var> is greater than or equal to
  256<sup>(5 − the number of items in <var>numbers</var>)</sup>,
- <a data-link-type="dfn" href="#parse-error">parse error</a>, return failure.
+ <a data-link-type="dfn" href="#syntax-violation">syntax violation</a>, return failure.
 
  </p>
     <li>
@@ -834,8 +838,8 @@ <h3 class="heading settled" data-level="3.3" id="host-parsing"><span class="secn
      <ol>
    
       <li>
-       <p>If <a data-link-type="dfn" href="#remaining">remaining</a> does not start with
-   "<code>:</code>", <a data-link-type="dfn" href="#parse-error">parse error</a>, return failure.
+       <p>If <a data-link-type="dfn" href="#remaining">remaining</a> does not start with "<code>:</code>",
+   <a data-link-type="dfn" href="#syntax-violation">syntax violation</a>, return failure.
 
    </p>
       <li>
@@ -860,8 +864,7 @@ <h3 class="heading settled" data-level="3.3" id="host-parsing"><span class="secn
      <ol>
    
       <li>
-       <p>If <var>piece pointer</var> is eight,
-   <a data-link-type="dfn" href="#parse-error">parse error</a>, return failure.
+       <p>If <var>piece pointer</var> is eight, <a data-link-type="dfn" href="#syntax-violation">syntax violation</a>, return failure.
 
    </p>
       <li>
@@ -873,8 +876,8 @@ <h3 class="heading settled" data-level="3.3" id="host-parsing"><span class="secn
        <ol>
      
         <li>
-         <p>If <var>compress pointer</var> is non-null,
-     <a data-link-type="dfn" href="#parse-error">parse error</a>, return failure.
+         <p>If <var>compress pointer</var> is non-null, <a data-link-type="dfn" href="#syntax-violation">syntax violation</a>,
+     return failure.
 
      </p>
         <li>Increase <var>pointer</var> and <var>piece pointer</var> by one, set
@@ -900,7 +903,7 @@ <h3 class="heading settled" data-level="3.3" id="host-parsing"><span class="secn
    </p>
       <li>
     
-       <p>Based on <a data-link-type="dfn" href="#c">c</a>:
+       <p>Switching on <a data-link-type="dfn" href="#c">c</a>:
 
     </p>
        <dl class="switch">
@@ -909,28 +912,45 @@ <h3 class="heading settled" data-level="3.3" id="host-parsing"><span class="secn
      
         <dd>
       
-         <p>If <var>length</var> is 0, <a data-link-type="dfn" href="#parse-error">parse error</a>,
-      return failure.
-      </p>
-         <p>Decrease <var>pointer</var> by <var>length</var>.
+         <ol>
+       
+          <li>
+           <p>If <var>length</var> is 0, <a data-link-type="dfn" href="#syntax-violation">syntax violation</a>, return failure.
+
+       </p>
+          <li>
+           <p>Decrease <var>pointer</var> by <var>length</var>.
+
+       </p>
+          <li>
+           <p>Jump to <a data-link-type="dfn" href="#concept-ipv6-parser-ipv4">IPv4</a>.
       </p>
-         <p>Jump to <a data-link-type="dfn" href="#concept-ipv6-parser-ipv4">IPv4</a>.
+         </ol>
+         
 
-     </p>
+     
         <dt>"<code>:</code>"
      
         <dd>
       
-         <p>Increase <var>pointer</var> by one.
+         <ol>
+       
+          <li>
+           <p>Increase <var>pointer</var> by one.
+
+       </p>
+          <li>
+           <p>If <a data-link-type="dfn" href="#c">c</a> is the <a data-link-type="dfn" href="#eof-code-point">EOF code point</a>, <a data-link-type="dfn" href="#syntax-violation">syntax violation</a>,
+       return failure.
       </p>
-         <p>If <a data-link-type="dfn" href="#c">c</a> is the <a data-link-type="dfn" href="#eof-code-point">EOF code point</a>,
-      <a data-link-type="dfn" href="#parse-error">parse error</a>, return failure.
+         </ol>
+         
 
-     </p>
+     
         <dt>Anything but the <a data-link-type="dfn" href="#eof-code-point">EOF code point</a>
      
         <dd>
-         <p><a data-link-type="dfn" href="#parse-error">Parse error</a>, return failure.
+         <p><a data-link-type="dfn" href="#syntax-violation">Syntax violation</a>, return failure.
     </p>
        </dl>
        
@@ -954,8 +974,7 @@ <h3 class="heading settled" data-level="3.3" id="host-parsing"><span class="secn
  </p>
     <li>
      <p><dfn data-dfn-type="dfn" data-lt="IPv6 parser IPv4" data-noexport="" id="concept-ipv6-parser-ipv4">IPv4<a class="self-link" href="#concept-ipv6-parser-ipv4"></a></dfn>:
- If <var>piece pointer</var> is greater than six,
- <a data-link-type="dfn" href="#parse-error">parse error</a>, return failure.
+ If <var>piece pointer</var> is greater than six, <a data-link-type="dfn" href="#syntax-violation">syntax violation</a>, return failure.
 
  </p>
     <li>
@@ -975,14 +994,13 @@ <h3 class="heading settled" data-level="3.3" id="host-parsing"><span class="secn
 
    </p>
       <li>
-       <p>If <a data-link-type="dfn" href="#c">c</a> is not an <a data-link-type="dfn" href="#ascii-digits">ASCII digit</a>,
-   <a data-link-type="dfn" href="#parse-error">parse error</a>, return failure. 
+       <p>If <a data-link-type="dfn" href="#c">c</a> is not an <a data-link-type="dfn" href="#ascii-digits">ASCII digit</a>, <a data-link-type="dfn" href="#syntax-violation">syntax violation</a>,
+   return failure. 
 
    </p>
       <li>
     
-       <p>While <a data-link-type="dfn" href="#c">c</a> is an
-    <a data-link-type="dfn" href="#ascii-digits">ASCII digit</a>, run these subsubsteps:
+       <p>While <a data-link-type="dfn" href="#c">c</a> is an <a data-link-type="dfn" href="#ascii-digits">ASCII digit</a>, run these subsubsteps:
 
     </p>
        <ol>
@@ -996,7 +1014,7 @@ <h3 class="heading settled" data-level="3.3" id="host-parsing"><span class="secn
          <p>If <var>value</var> is null, set <var>value</var> to <var>number</var>.
 
       </p>
-         <p>Otherwise, if <var>value</var> is 0, <a data-link-type="dfn" href="#parse-error">parse error</a>, return failure.
+         <p>Otherwise, if <var>value</var> is 0, <a data-link-type="dfn" href="#syntax-violation">syntax violation</a>, return failure.
 
       </p>
          <p>Otherwise, set <var>value</var> to <var>value</var> × 10 + <var>number</var>.
@@ -1007,7 +1025,7 @@ <h3 class="heading settled" data-level="3.3" id="host-parsing"><span class="secn
 
      </p>
         <li>
-         <p>If <var>value</var> is greater than 255, <a data-link-type="dfn" href="#parse-error">parse error</a>,
+         <p>If <var>value</var> is greater than 255, <a data-link-type="dfn" href="#syntax-violation">syntax violation</a>,
      return failure.
     </p>
        </ol>
@@ -1017,7 +1035,7 @@ <h3 class="heading settled" data-level="3.3" id="host-parsing"><span class="secn
       <li>
        <p>If <var>dots seen</var> is less than 3 and
    <a data-link-type="dfn" href="#c">c</a> is not a "<code>.</code>",
-   <a data-link-type="dfn" href="#parse-error">parse error</a>, return failure.
+   <a data-link-type="dfn" href="#syntax-violation">syntax violation</a>, return failure.
 
    </p>
       <li>
@@ -1038,7 +1056,7 @@ <h3 class="heading settled" data-level="3.3" id="host-parsing"><span class="secn
       <li>
        <p>If <var>dots seen</var> is 3 and <a data-link-type="dfn" href="#c">c</a> is not
    the <a data-link-type="dfn" href="#eof-code-point">EOF code point</a>,
-   <a data-link-type="dfn" href="#parse-error">parse error</a>, return failure.
+   <a data-link-type="dfn" href="#syntax-violation">syntax violation</a>, return failure.
 
    </p>
       <li>
@@ -1077,9 +1095,8 @@ <h3 class="heading settled" data-level="3.3" id="host-parsing"><span class="secn
 
  
     <li>
-     <p>Otherwise, if <var>compress pointer</var> is null and
- <var>piece pointer</var> is not eight, <a data-link-type="dfn" href="#parse-error">parse error</a>,
- return failure.
+     <p>Otherwise, if <var>compress pointer</var> is null and <var>piece pointer</var> is
+ not eight, <a data-link-type="dfn" href="#syntax-violation">syntax violation</a>, return failure.
 
  </p>
     <li>
@@ -1515,9 +1532,6 @@ <h3 class="heading settled" data-level="4.1" id="url-writing"><span class="secno
    <h3 class="heading settled" data-level="4.2" id="url-parsing"><span class="secno">4.2. </span><span class="content">URL parsing</span><a class="self-link" href="#url-parsing"></a></h3>
 
 
-   <p class="XXX">Add the ability to halt on the first conformance error.
-
-</p>
    <p>The <dfn data-dfn-type="dfn" data-noexport="" id="concept-url-parser">URL parser<a class="self-link" href="#concept-url-parser"></a></dfn> takes a string
 <var>input</var>, with an optional <a data-link-type="dfn" href="#concept-base-url">base URL</a> <var>base</var> and an optional
 <a data-link-type="dfn" href="https://encoding.spec.whatwg.org/#encoding">encoding</a> <var>encoding override</var>, and then runs these steps:
@@ -1602,7 +1616,7 @@ <h3 class="heading settled" data-level="4.2" id="url-parsing"><span class="secno
    </p>
       <li>
        <p>If <var>input</var> contains any leading or trailing
-   <a data-link-type="dfn" href="#c0-controls-and-space">C0 controls and space</a>, <a data-link-type="dfn" href="#parse-error">parse error</a>.
+   <a data-link-type="dfn" href="#c0-controls-and-space">C0 controls and space</a>, <a data-link-type="dfn" href="#syntax-violation">syntax violation</a>.
 
    </p>
       <li>
@@ -1670,7 +1684,7 @@ <h3 class="heading settled" data-level="4.2" id="url-parsing"><span class="secno
 
      </p>
         <li>
-         <p>Otherwise, <a data-link-type="dfn" href="#parse-error">parse error</a>, terminate this algorithm.
+         <p>Otherwise, <a data-link-type="dfn" href="#syntax-violation">syntax violation</a>, terminate this algorithm.
     </p>
        </ol>
        
@@ -1767,7 +1781,7 @@ <h3 class="heading settled" data-level="4.2" id="url-parsing"><span class="secno
 
      </p>
         <li>
-         <p>Otherwise, <a data-link-type="dfn" href="#parse-error">parse error</a>, terminate this algorithm.
+         <p>Otherwise, <a data-link-type="dfn" href="#syntax-violation">syntax violation</a>, terminate this algorithm.
     </p>
        </ol>
        
@@ -1781,7 +1795,7 @@ <h3 class="heading settled" data-level="4.2" id="url-parsing"><span class="secno
      
         <li>
          <p>If <var>base</var> is null, or <var>base</var>’s <a data-link-type="dfn" href="#non_relative-flag">non-relative flag</a> is
-     set and <a data-link-type="dfn" href="#c">c</a> is not "<code>#</code>", <a data-link-type="dfn" href="#parse-error">parse error</a>, return failure.
+     set and <a data-link-type="dfn" href="#c">c</a> is not "<code>#</code>", <a data-link-type="dfn" href="#syntax-violation">syntax violation</a>, return failure.
 
      </p>
         <li>
@@ -1821,9 +1835,8 @@ <h3 class="heading settled" data-level="4.2" id="url-parsing"><span class="secno
     and increase <var>pointer</var> by one.
 
     </p>
-       <p>Otherwise, <a data-link-type="dfn" href="#parse-error">parse error</a>, set <var>state</var> to
-    <a data-link-type="dfn" href="#relative-state">relative state</a> and decrease <var>pointer</var> by
-    one.
+       <p>Otherwise, <a data-link-type="dfn" href="#syntax-violation">syntax violation</a>, set <var>state</var> to <a data-link-type="dfn" href="#relative-state">relative state</a>
+    and decrease <var>pointer</var> by one.
 
    </p>
       <dt><dfn data-dfn-type="dfn" data-noexport="" id="path-or-authority-state">path or authority state<a class="self-link" href="#path-or-authority-state"></a></dfn>
@@ -1842,7 +1855,7 @@ <h3 class="heading settled" data-level="4.2" id="url-parsing"><span class="secno
       <dd>
     
        <p>Set <var>url</var>’s <a data-link-type="dfn" href="#concept-url-scheme">scheme</a> to
-    <var>base</var>’s <a data-link-type="dfn" href="#concept-url-scheme">scheme</a>, and then, based on <a data-link-type="dfn" href="#c">c</a>:
+    <var>base</var>’s <a data-link-type="dfn" href="#concept-url-scheme">scheme</a>, and then, switching on <a data-link-type="dfn" href="#c">c</a>:
 
     </p>
        <dl class="switch">
@@ -1911,7 +1924,7 @@ <h3 class="heading settled" data-level="4.2" id="url-parsing"><span class="secno
         <dd>
       
          <p>If <var>url</var> <a data-link-type="dfn" href="#is-special">is special</a> and <a data-link-type="dfn" href="#c">c</a> is "<code>\</code>",
-      <a data-link-type="dfn" href="#parse-error">parse error</a>, set <var>state</var> to <a data-link-type="dfn" href="#relative-slash-state">relative slash state</a>.
+      <a data-link-type="dfn" href="#syntax-violation">syntax violation</a>, set <var>state</var> to <a data-link-type="dfn" href="#relative-slash-state">relative slash state</a>.
 
       </p>
          <p>Otherwise, run these steps:
@@ -1959,7 +1972,7 @@ <h3 class="heading settled" data-level="4.2" id="url-parsing"><span class="secno
          <ol>
        
           <li>
-           <p>If <a data-link-type="dfn" href="#c">c</a> is "<code>\</code>", <a data-link-type="dfn" href="#parse-error">parse error</a>.
+           <p>If <a data-link-type="dfn" href="#c">c</a> is "<code>\</code>", <a data-link-type="dfn" href="#syntax-violation">syntax violation</a>.
 
        </p>
           <li>
@@ -1994,7 +2007,7 @@ <h3 class="heading settled" data-level="4.2" id="url-parsing"><span class="secno
     <var>pointer</var> by one.
 
     </p>
-       <p>Otherwise, <a data-link-type="dfn" href="#parse-error">parse error</a>, set <var>state</var> to
+       <p>Otherwise, <a data-link-type="dfn" href="#syntax-violation">syntax violation</a>, set <var>state</var> to
     <a data-link-type="dfn" href="#special-authority-ignore-slashes-state">special authority ignore slashes state</a>, and decrease <var>pointer</var> by one.
 
    </p>
@@ -2006,7 +2019,7 @@ <h3 class="heading settled" data-level="4.2" id="url-parsing"><span class="secno
     to <a data-link-type="dfn" href="#authority-state">authority state</a>, and decrease <var>pointer</var> by one.
 
     </p>
-       <p>Otherwise, <a data-link-type="dfn" href="#parse-error">parse error</a>.
+       <p>Otherwise, <a data-link-type="dfn" href="#syntax-violation">syntax violation</a>.
 
    </p>
       <dt><dfn data-dfn-type="dfn" data-noexport="" id="authority-state">authority state<a class="self-link" href="#authority-state"></a></dfn>
@@ -2023,7 +2036,7 @@ <h3 class="heading settled" data-level="4.2" id="url-parsing"><span class="secno
          <ol>
        
           <li>
-           <p><a data-link-type="dfn" href="#parse-error">Parse error</a>.
+           <p><a data-link-type="dfn" href="#syntax-violation">Syntax violation</a>.
 
        </p>
           <li>
@@ -2182,8 +2195,7 @@ <h3 class="heading settled" data-level="4.2" id="url-parsing"><span class="secno
 
      
         <li>
-         <p>Otherwise, if <a data-link-type="dfn" href="#c">c</a> is U+0009, U+000A, or U+000D,
-     <a data-link-type="dfn" href="#parse-error">parse error</a>.
+         <p>Otherwise, if <a data-link-type="dfn" href="#c">c</a> is U+0009, U+000A, or U+000D, <a data-link-type="dfn" href="#syntax-violation">syntax violation</a>.
 
      </p>
         <li>
@@ -2220,8 +2232,7 @@ <h3 class="heading settled" data-level="4.2" id="url-parsing"><span class="secno
        <ol>
      
         <li>
-         <p>If <a data-link-type="dfn" href="#c">c</a> is an <a data-link-type="dfn" href="#ascii-digits">ASCII digit</a>,
-     append <a data-link-type="dfn" href="#c">c</a> to <var>buffer</var>.
+         <p>If <a data-link-type="dfn" href="#c">c</a> is an <a data-link-type="dfn" href="#ascii-digits">ASCII digit</a>, append <a data-link-type="dfn" href="#c">c</a> to <var>buffer</var>.
 
      </p>
         <li>
@@ -2242,7 +2253,7 @@ <h3 class="heading settled" data-level="4.2" id="url-parsing"><span class="secno
        </p>
           <li>
            <p>If <var>port</var> is greater than 2<sup>16</sup> − 1,
-       <a data-link-type="dfn" href="#parse-error">parse error</a>, return failure.
+       <a data-link-type="dfn" href="#syntax-violation">syntax violation</a>, return failure.
 
        </p>
           <li>
@@ -2265,12 +2276,11 @@ <h3 class="heading settled" data-level="4.2" id="url-parsing"><span class="secno
 
      
         <li>
-         <p>Otherwise, if <a data-link-type="dfn" href="#c">c</a> is U+0009, U+000A, or U+000D,
-     <a data-link-type="dfn" href="#parse-error">parse error</a>.
+         <p>Otherwise, if <a data-link-type="dfn" href="#c">c</a> is U+0009, U+000A, or U+000D, <a data-link-type="dfn" href="#syntax-violation">syntax violation</a>.
 
      </p>
         <li>
-         <p>Otherwise, <a data-link-type="dfn" href="#parse-error">parse error</a>, return failure.
+         <p>Otherwise, <a data-link-type="dfn" href="#syntax-violation">syntax violation</a>, return failure.
     </p>
        </ol>
        
@@ -2281,7 +2291,7 @@ <h3 class="heading settled" data-level="4.2" id="url-parsing"><span class="secno
       <dd>
     
        <p>Set <var>url</var>’s <a data-link-type="dfn" href="#concept-url-scheme">scheme</a> to "<code>file</code>",
-    and then, based on <a data-link-type="dfn" href="#c">c</a>:
+    and then, switching on <a data-link-type="dfn" href="#c">c</a>:
 
     </p>
        <dl class="switch">
@@ -2308,7 +2318,7 @@ <h3 class="heading settled" data-level="4.2" id="url-parsing"><span class="secno
          <ol>
        
           <li>
-           <p>If <a data-link-type="dfn" href="#c">c</a> is "<code>\</code>", <a data-link-type="dfn" href="#parse-error">parse error</a>.
+           <p>If <a data-link-type="dfn" href="#c">c</a> is "<code>\</code>", <a data-link-type="dfn" href="#syntax-violation">syntax violation</a>.
 
        </p>
           <li>
@@ -2394,7 +2404,7 @@ <h3 class="heading settled" data-level="4.2" id="url-parsing"><span class="secno
          <ol>
        
           <li>
-           <p>If <a data-link-type="dfn" href="#c">c</a> is "<code>\</code>", <a data-link-type="dfn" href="#parse-error">parse error</a>.
+           <p>If <a data-link-type="dfn" href="#c">c</a> is "<code>\</code>", <a data-link-type="dfn" href="#syntax-violation">syntax violation</a>.
 
        </p>
           <li>
@@ -2501,8 +2511,7 @@ <h3 class="heading settled" data-level="4.2" id="url-parsing"><span class="secno
 
      
         <li>
-         <p>Otherwise, if <a data-link-type="dfn" href="#c">c</a> is U+0009, U+000A, or U+000D,
-     <a data-link-type="dfn" href="#parse-error">parse error</a>.
+         <p>Otherwise, if <a data-link-type="dfn" href="#c">c</a> is U+0009, U+000A, or U+000D, <a data-link-type="dfn" href="#syntax-violation">syntax violation</a>.
 
      </p>
         <li>
@@ -2520,7 +2529,7 @@ <h3 class="heading settled" data-level="4.2" id="url-parsing"><span class="secno
      
         <li>
          <p>If <var>url</var> <a data-link-type="dfn" href="#is-special">is special</a> and <a data-link-type="dfn" href="#c">c</a> is "<code>\</code>",
-     <a data-link-type="dfn" href="#parse-error">parse error</a>.
+     <a data-link-type="dfn" href="#syntax-violation">syntax violation</a>.
 
      </p>
         <li>
@@ -2548,7 +2557,7 @@ <h3 class="heading settled" data-level="4.2" id="url-parsing"><span class="secno
        
           <li>
            <p>If <var>url</var> <a data-link-type="dfn" href="#is-special">is special</a> and <a data-link-type="dfn" href="#c">c</a> is "<code>\</code>",
-       <a data-link-type="dfn" href="#parse-error">parse error</a>.
+       <a data-link-type="dfn" href="#syntax-violation">syntax violation</a>.
 
        </p>
           <li>
@@ -2641,8 +2650,7 @@ <h3 class="heading settled" data-level="4.2" id="url-parsing"><span class="secno
 
      
         <li>
-         <p>Otherwise, if <a data-link-type="dfn" href="#c">c</a> is U+0009, U+000A, or U+000D,
-     <a data-link-type="dfn" href="#parse-error">parse error</a>.
+         <p>Otherwise, if <a data-link-type="dfn" href="#c">c</a> is U+0009, U+000A, or U+000D, <a data-link-type="dfn" href="#syntax-violation">syntax violation</a>.
 
      </p>
         <li>
@@ -2655,12 +2663,12 @@ <h3 class="heading settled" data-level="4.2" id="url-parsing"><span class="secno
           <li>
            <p>If <a data-link-type="dfn" href="#c">c</a> is not a
        <a data-link-type="dfn" href="#url-code-points">URL code point</a> and not "<code>%</code>",
-       <a data-link-type="dfn" href="#parse-error">parse error</a>.
+       <a data-link-type="dfn" href="#syntax-violation">syntax violation</a>.
 
        </p>
           <li>
            <p>If <a data-link-type="dfn" href="#c">c</a> is "<code>%</code>" and <a data-link-type="dfn" href="#remaining">remaining</a> does
-       not start with two <a data-link-type="dfn" href="#ascii-hex-digits">ASCII hex digits</a>, <a data-link-type="dfn" href="#parse-error">parse error</a>.
+       not start with two <a data-link-type="dfn" href="#ascii-hex-digits">ASCII hex digits</a>, <a data-link-type="dfn" href="#syntax-violation">syntax violation</a>.
 
        </p>
           <li>
@@ -2703,12 +2711,12 @@ <h3 class="heading settled" data-level="4.2" id="url-parsing"><span class="secno
           <li>
            <p>If <a data-link-type="dfn" href="#c">c</a> is not the <a data-link-type="dfn" href="#eof-code-point">EOF code point</a>, not a
        <a data-link-type="dfn" href="#url-code-points">URL code point</a>, and not
-       "<code>%</code>", <a data-link-type="dfn" href="#parse-error">parse error</a>.
+       "<code>%</code>", <a data-link-type="dfn" href="#syntax-violation">syntax violation</a>.
 
        </p>
           <li>
            <p>If <a data-link-type="dfn" href="#c">c</a> is "<code>%</code>" and <a data-link-type="dfn" href="#remaining">remaining</a> does
-       not start with two <a data-link-type="dfn" href="#ascii-hex-digits">ASCII hex digits</a>, <a data-link-type="dfn" href="#parse-error">parse error</a>.
+       not start with two <a data-link-type="dfn" href="#ascii-hex-digits">ASCII hex digits</a>, <a data-link-type="dfn" href="#syntax-violation">syntax violation</a>.
 
        </p>
           <li>
@@ -2791,8 +2799,7 @@ <h3 class="heading settled" data-level="4.2" id="url-parsing"><span class="secno
 
      
         <li>
-         <p>Otherwise, if <a data-link-type="dfn" href="#c">c</a> is U+0009, U+000A, or U+000D,
-     <a data-link-type="dfn" href="#parse-error">parse error</a>.
+         <p>Otherwise, if <a data-link-type="dfn" href="#c">c</a> is U+0009, U+000A, or U+000D, <a data-link-type="dfn" href="#syntax-violation">syntax violation</a>.
 
      </p>
         <li>
@@ -2805,12 +2812,12 @@ <h3 class="heading settled" data-level="4.2" id="url-parsing"><span class="secno
           <li>
            <p>If <a data-link-type="dfn" href="#c">c</a> is not a
        <a data-link-type="dfn" href="#url-code-points">URL code point</a> and not "<code>%</code>",
-       <a data-link-type="dfn" href="#parse-error">parse error</a>.
+       <a data-link-type="dfn" href="#syntax-violation">syntax violation</a>.
 
        </p>
           <li>
            <p>If <a data-link-type="dfn" href="#c">c</a> is "<code>%</code>" and <a data-link-type="dfn" href="#remaining">remaining</a> does
-       not start with two <a data-link-type="dfn" href="#ascii-hex-digits">ASCII hex digits</a>, <a data-link-type="dfn" href="#parse-error">parse error</a>.
+       not start with two <a data-link-type="dfn" href="#ascii-hex-digits">ASCII hex digits</a>, <a data-link-type="dfn" href="#syntax-violation">syntax violation</a>.
 
        </p>
           <li>
@@ -2827,7 +2834,7 @@ <h3 class="heading settled" data-level="4.2" id="url-parsing"><span class="secno
    
       <dd>
     
-       <p>Based on <a data-link-type="dfn" href="#c">c</a>:
+       <p>Switching on <a data-link-type="dfn" href="#c">c</a>:
     </p>
        <dl class="switch">
      
@@ -2846,7 +2853,7 @@ <h3 class="heading settled" data-level="4.2" id="url-parsing"><span class="secno
         <dt>U+000D
      
         <dd>
-         <p><a data-link-type="dfn" href="#parse-error">Parse error</a>.
+         <p><a data-link-type="dfn" href="#syntax-violation">Syntax violation</a>.
 
      </p>
         <dt>Otherwise
@@ -2857,12 +2864,12 @@ <h3 class="heading settled" data-level="4.2" id="url-parsing"><span class="secno
        
           <li>
            <p>If <a data-link-type="dfn" href="#c">c</a> is not a <a data-link-type="dfn" href="#url-code-points">URL code point</a> and not
-       "<code>%</code>", <a data-link-type="dfn" href="#parse-error">parse error</a>.
+       "<code>%</code>", <a data-link-type="dfn" href="#syntax-violation">syntax violation</a>.
 
        </p>
           <li>
            <p>If <a data-link-type="dfn" href="#c">c</a> is "<code>%</code>" and <a data-link-type="dfn" href="#remaining">remaining</a> does
-       not start with two <a data-link-type="dfn" href="#ascii-hex-digits">ASCII hex digits</a>, <a data-link-type="dfn" href="#parse-error">parse error</a>.
+       not start with two <a data-link-type="dfn" href="#ascii-hex-digits">ASCII hex digits</a>, <a data-link-type="dfn" href="#syntax-violation">syntax violation</a>.
 
        </p>
           <li>
@@ -4593,9 +4600,9 @@ <h3 class="heading settled" data-level="6.5" id="url-apis-elsewhere"><span class
 
 </p>
      <p>If a standard decides to use a variant of the name "URL" for a feature it defines, it
-should name such a feature "url" (i.e. lowercase and with an "l" at the end). Names such
+should name such a feature "url" (i.e., lowercase and with an "l" at the end). Names such
 as "URL", "URI", and "IRI" should not be used. However, if the name is a compound, "URL"
-(i.e. uppercase) is preferred, e.g. "newURL" and "oldURL".
+(i.e., uppercase) is preferred, e.g., "newURL" and "oldURL".
 
 </p>
      <p class="note" role="note">The <code class="idl"><a data-link-type="idl" href="https://html.spec.whatwg.org/multipage/comms.html#eventsource">EventSource</a></code> and
@@ -4624,6 +4631,7 @@ <h2 class="no-num heading settled" id="acknowledgments"><span class="content">Ac
 Behnam Esfahbod,
 Bobby Holley,
 Boris Zbarsky,
+Brad Hill,
 Brandon Ross,
 Chris Rebert,
 Dan Appelquist,
@@ -4802,7 +4810,6 @@ <h3 class="no-num heading settled" id="index-defined-here"><span class="content"
      <li><a href="#concept-url-origin">dfn for URL</a><span>, in §4.5</span>
      <li><a href="#dom-urlutils-origin">attribute for URLUtils, URLUtilsReadOnly</a><span>, in §6.3</span>
     </ul>
-   <li><a href="#parse-error">parse error</a><span>, in §1.1</span>
    <li>password
     <ul>
      <li><a href="#concept-url-password">dfn for URL</a><span>, in §4</span>
@@ -4859,6 +4866,7 @@ <h3 class="no-num heading settled" id="index-defined-here"><span class="content"
      <li><a href="#URLUtilsReadOnly-stringification-behavior">dfn for URLUtilsReadOnly</a><span>, in §6</span>
      <li><a href="#stringification-behavior">dfn for URLSearchParams</a><span>, in §6.4</span>
     </ul>
+   <li><a href="#syntax-violation">syntax violation</a><span>, in §1.1</span>
    <li>update steps
     <ul>
      <li><a href="#concept-urlutils-update">dfn for URLUtils</a><span>, in §6</span>