CINXE.COM
IETF Author Tools - iddiff
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>IETF Author Tools - iddiff</title> <meta name="description" content="This service allows you to compare two Internet-Drafts or RFCs"> <link rel="canonical" href="https://author-tools.ietf.org/"> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.0/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-KyZXEAg3QhqLMpG8r+8fhAXLRk2vvoC2f3B09zVXn8CA5QIVfZOJ3BCsw2P0p/We" crossorigin="anonymous"> <link rel="stylesheet" href="styles/custom.css"> </head> <body> <header> <nav class="navbar navbar-expand-sm navbar-dark bg-dark"> <div class="container-fluid"> <a class="navbar-brand" href="/"> <img alt="IETF Logo" src="https://www.ietf.org/lib/dt/7.39.0/ietf/images/ietflogo-small-transparent.png"> </a> <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <div class="collapse navbar-collapse" id="navbarSupportedContent"> <ul class="navbar-nav me-auto mb-2"> <li class="nav-item"> <a class="nav-link" href="/">Home</a> </li> <li class="nav-item"> <a class="nav-link active" aria-current="page" href="/iddiff">iddiff</a> </li> <li class="nav-item"> <a class="nav-link" href="/idnits">idnits</a> </li> <li class="nav-item"> <a class="nav-link" href="/svgcheck">svgcheck</a> </li> <li class="nav-item"> <a class="nav-link" aria-current="page" href="/abnf">ABNF Tools</a> </li> <li class="nav-item"> <a class="nav-link" href="/doc/">API</a> </li> <li class="nav-item"> <a class="nav-link" href="https://bib.ietf.org">BibXML</a> </li> <li class="nav-item"> <a class="nav-link" href="https://authors.ietf.org">Internet-Draft Author Resources</a> </li> <li class="nav-item"> <a class="nav-link" href="https://www.ietf.org/">IETF</a> </li> <li class="nav-item"> <a class="nav-link" href="https://datatracker.ietf.org/">Datatracker</a> </li> </ul> </div> </div> </nav> </header> <main> <div class="container"> <div class="row"> <h1 class="text-center">IETF Author Tools - iddiff</h1> </div> <div class="row" id="alertError"> <div class="alert alert-danger d-flex align-items-center fade show" role="alert"> <svg class="bi flex-shrink-0 me-2" width="24" height="24" role="img" aria-label="Danger:"><use xlink:href="#exclamation-triangle-fill"/></svg> <div class="error-message" id="messageError"> </div> </div> </div> <div class="row"> <div> <p> This service allows you to compare Internet-Drafts and RFCs. You can either upload the files or provide the Internet-Draft or RFC document name. If the second document is not provided, the system will use the latest revision from the datatracker, or the previous revision if the latest is the same as provided. The input files must be a valid Internet-Draft or RFC in one of the following formats: </p> <ul> <li>XML as .xml (automatically recognises v3 as defined in <a href="https://www.rfc-editor.org/info/rfc7991">RFC 7991</a> and v2 as defined in <a href="https://www.rfc-editor.org/info/rfc7749">RFC 7749</a>)</li> <li>Markdown as .md or .mkd (<a href="https://github.com/cabo/kramdown-rfc">kramdown-rfc</a> and <a href="https://mmark.miek.nl/">mmark</a> dialects are supported)</li> <li>Plain text as .txt</li> </ul> <label class="form-label">First Document</label> <ul class="nav nav-tabs" id="ulDraftTabs1" role="tablist"> <li class="nav-item" role="presentation"> <button class="nav-link tab-link active" id="file-tab1" data-bs-toggle="tab" data-bs-target="#file1" type="button" role="tab" aria-controls="file1" aria-selected="true" data-others="form-tab-id1,form-tab-url1" data-bs-toggle2="tooltip" data-bs-placement="bottom">Upload File</button> </li> <li class="nav-item" role="presentation"> <button class="nav-link tab-link" id="name-tab1" data-bs-toggle="tab" data-bs-target="#name1" type="button" role="tab" aria-controls="name1" aria-selected="false" data-others="form-tab-file1,form-tab-url1" data-bs-toggle2="tooltip" data-bs-placement="bottom">Document Name</button> </li> <li class="nav-item" role="presentation"> <button class="nav-link tab-link" id="url-tab1" data-bs-toggle="tab" data-bs-target="#url1" type="button" role="tab" aria-controls="url1" aria-selected="false" data-others="form-tab-file1,form-tab-id1" data-bs-toggle2="tooltip" data-bs-placement="bottom">URL</button> </li> </ul> <div class="tab-content" id="ulDraftTabs1Content"> <div class="tab-pane fade show active" id="file1" role="tabpanel" aria-labelledby="file-tab1"> <form id="form-tab-file1"> <input class="form-control form-control-lg" id="formFile1" type="file" accept=".xml,.md,.mkd,.txt" data-bs-toggle2="tooltip" data-bs-placement="bottom" title="Select input file. Input file can be XML, Markdown (kramdown-rfc or mmark) or text."> </form> </div> <div class="tab-pane fade" id="name1" role="tabpanel" aria-labelledby="name-tab1"> <form id="form-tab-id1"> <input class="form-control form-control-lg" id="formID1" type="text" placeholder="draft-ietf-wg-example-01" data-bs-toggle2="tooltip" data-bs-placement="bottom" title="Provide a document name. Example: rfc7749, rfc 7749, draft-iab-xml2rfcv2-02"> </form> </div> <div class="tab-pane fade" id="url1" role="tabpanel" aria-labelledby="url-tab1"> <form id="form-tab-url1"> <input class="form-control form-control-lg" id="formURL1" type="text" placeholder="https://www.ietf.org/archive/id/draft-ietf-wg-example-01.txt" data-bs-toggle2="tooltip" data-bs-placement="bottom" title="Provide an Internet-Draft/RFC URL. See the About page for a list of allowed domains."> </form> </div> </div> <label class="form-label">Second Document (Optional)</label> <ul class="nav nav-tabs" id="ulDraftTabs2" role="tablist"> <li class="nav-item" role="presentation"> <button class="nav-link tab-link active" id="file-tab2" data-bs-toggle="tab" data-bs-target="#file2" type="button" role="tab" aria-controls="file2" aria-selected="true" data-others="form-tab-id2,form-tab-url2" data-bs-toggle2="tooltip" data-bs-placement="bottom">Upload File</button> </li> <li class="nav-item" role="presentation"> <button class="nav-link tab-link" id="name-tab2" data-bs-toggle="tab" data-bs-target="#name2" type="button" role="tab" aria-controls="name2" aria-selected="false" data-others="form-tab-file2,form-tab-url2" data-bs-toggle2="tooltip" data-bs-placement="bottom">Document Name</button> </li> <li class="nav-item" role="presentation"> <button class="nav-link tab-link" id="url-tab2" data-bs-toggle="tab" data-bs-target="#url2" type="button" role="tab" aria-controls="url2" aria-selected="false" data-others="form-tab-file2,form-tab-id2" data-bs-toggle2="tooltip" data-bs-placement="bottom">URL</button> </li> </ul> <div class="tab-content" id="ulDraftTabs2Content"> <div class="tab-pane fade show active" id="file2" role="tabpanel" aria-labelledby="file-tab2"> <form id="form-tab-file2"> <input class="form-control form-control-lg" id="formFile2" type="file" accept=".xml,.md,.mkd,.txt" data-bs-toggle2="tooltip" data-bs-placement="bottom" title="Select input file. Input file can be XML, Markdown (kramdown-rfc or mmark) or text."> </form> </div> <div class="tab-pane fade" id="name2" role="tabpanel" aria-labelledby="name-tab2"> <form id="form-tab-id2"> <input class="form-control form-control-lg" id="formID2" type="text" placeholder="draft-ietf-wg-example-02" data-bs-toggle2="tooltip" data-bs-placement="bottom" title="Provide a document name. Example: rfc7749, rfc 7749, draft-iab-xml2rfcv2-02"> </form> </div> <div class="tab-pane fade" id="url2" role="tabpanel" aria-labelledby="url-tab2"> <form id="form-tab-url2"> <input class="form-control form-control-lg" id="formURL2" type="text" placeholder="https://www.ietf.org/archive/id/draft-ietf-wg-example-02.txt" data-bs-toggle2="tooltip" data-bs-placement="bottom" title="Provide an Internet-Draft/RFC URL. See the About page for a list of allowed domains."> </form> </div> </div> </div> </div> <div class="row mt-2"> <div> <div class="form-check form-switch"> <input class="form-check-input" type="checkbox" id="switchRaw"> <label class="form-check-label" for="switchRaw">Do not convert the files</label> </div> </div> </div> <div class="row mt-2"> <div> <div class="form-check form-check-inline"> <input class="form-check-input" type="radio" name="switchDiffTool" id="switchRfcDiff" checked> <label class="form-check-label" for="switchRfcDiff">Use rfcdiff</label> </div> <div class="form-check form-check-inline"> <input class="form-check-input" type="radio" name="switchDiffTool" id="switchIdDiff"> <label class="form-check-label" for="switchIdDiff">Use iddiff</label> </div> </div> </div> <div class="row mt-2"> <div class="d-grid gap-2 d-md-flex justify-content-md-center"> <button class="btn btn-primary btn-lg flex-grow-1" type="button" value="compare" id="buttonCompare" data-title="Compare (side by side)" data-bs-toggle2="tooltip" data-bs-placement="bottom">Compare (side by side)</button> <button class="btn btn-primary btn-lg flex-grow-1" type="button" value="abdiff" id="buttonAbdiff" data-title="Before-after" data-bs-toggle2="tooltip" data-bs-placement="bottom" title="Get before-after difference.">abdiff</button> <button class="btn btn-primary btn-lg flex-grow-1" type="button" value="chbars" id="buttonChbars" data-title="Change bars" data-bs-toggle2="tooltip" data-bs-placement="bottom" title="Get changebar marked output.">chbars</button> <button class="btn btn-primary btn-lg flex-grow-1" type="button" value="wdiff" id="buttonWdiff" data-title="Wdiff" data-bs-toggle2="tooltip" data-bs-placement="bottom" title="Get HTML wdiff output.">Wdiff</button> </div> </div> <div class="row mt-2"> <div class="d-grid gap-2 d-md-flex"> <a href="#" class="btn btn-success btn-md" id="buttonDownload" data-bs-toggle2="tooltip" data-bs-placement="bottom" title="Download the output file.">Download</a> <a href="#" class="btn btn-success btn-md" id="buttonOpen" data-bs-toggle2="tooltip" data-bs-placement="bottom" title="Open the output file in your web browser.">Open in web browser</a> <a href="#" class="btn btn-success btn-md" id="buttonShare" data-bs-toggle2="tooltip" data-bs-placement="bottom" title="Get a shareable URL when document name or URL is provided.">Get shareable URL</a> </div> </div> <div class="row mt-2 diff" id="divDiff"> </div> </div> </main> <footer> <div class="text-center mt-3"> <p><small> <a href="/about">About</a> | <a href="https://github.com/ietf-tools/author-tools">Author Tools (github repository)</a> | <a href="https://www.ietf.org/">IETF</a> | <a href="https://github.com/ietf-tools/author-tools/blob/main/LICENSE">LICENSE</a> | <a href="https://status.ietf.org/">System Status</a> | <span class="text-danger"> Report a bug: <a href="https://github.com/ietf-tools/author-tools/issues/new/choose">GitHub</a> <a href="mailto:tools-help@ietf.org">Email</a> </span> </small></p> </div> </footer> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.0/dist/js/bootstrap.bundle.min.js" integrity="sha384-U1DAWAznBHeqEIlVSCgzq+c9gqGAJn5c/t99JyeKa9xxaYpSvHU5awsuZVVFIhvj" crossorigin="anonymous"></script> <script src="scripts/iddiff.js"></script> <!-- Matomo --> <script> var _paq = window._paq = window._paq || []; /* tracker methods like "setCustomDimension" should be called before "trackPageView" */ _paq.push(['trackPageView']); _paq.push(['enableLinkTracking']); (function() { var u="//analytics.ietf.org/"; _paq.push(['setTrackerUrl', u+'matomo.php']); _paq.push(['setSiteId', '9']); var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s); })(); </script> <!-- End Matomo Code --> <script>(function(){function c(){var b=a.contentDocument||a.contentWindow.document;if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'8e72f3696a805feb',t:'MTczMjM4MzY5NS4wMDAwMDA='};var a=document.createElement('script');a.nonce='';a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script></body> </html>