CINXE.COM
IETF Author Tools
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>IETF Author Tools</title> <meta name="description" content="This service allows you to convert an Internet-Draft from one format into another, including rendered outputs. In the background this service uses id2xml, kramdown-rfc, mmark and xml2rfc, chaining them together as needed to deliver the requested conversion."> <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 active" aria-current="page" href="/">Home</a> </li> <li class="nav-item"> <a class="nav-link" 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</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 convert an Internet-Draft from one format into another, including rendered outputs. In the background this service uses id2xml, kramdown-rfc, mmark and xml2rfc, chaining them together as needed to deliver the requested conversion.<br> The input must be a valid Internet-Draft 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> <p> Visit <a href="https://authors.ietf.org">authors.ietf.org</a> for information on how to write an Internet-Draft. </p> <label for="formFile" class="form-label">Input file</label> <input class="form-control form-control-lg" id="formFile" type="file" accept=".xml,.md,.mkd,.txt" required data-bs-toggle="tooltip" data-bs-placement="bottom" title="Select input file. Input file can be XML, Markdown (kramdown-rfc or mmark) or text."> </div> </div> <div class="row mt-2"> <div class="d-grid gap-2 d-md-flex justify-content-md-center"> <button class="render-btn action-btn btn btn-primary btn-lg flex-grow-1" type="button" value="text" data-title="Text" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Generate a formatted text file with proper page breaks.">Text</button> <button class="render-btn action-btn btn btn-primary btn-lg flex-grow-1" type="button" value="html" data-title="HTML" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Generate a formatted HTML file.">HTML</button> <button class="render-btn action-btn btn btn-primary btn-lg flex-grow-1" type="button" value="xml" data-title="XML" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Generate a xml2rfc version 3 XML file.">XML</button> <button class="render-btn action-btn btn btn-primary btn-lg flex-grow-1" type="button" value="pdf" data-title="PDF" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Generate a formatted PDF file.">PDF</button> <button class="diff-btn action-btn btn btn-success btn-lg flex-grow-1" type="button" data-title="Diff with latest" id="buttonDiff" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Compare with the latest revision of the draft available on datatracker.">Diff with latest</button> <button class="validate-btn action-btn btn btn-success btn-lg flex-grow-1" type="button" data-title="Validate (idnits)" id="buttonValidate" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Validate the xml2rfc version 3 of the provided file with idnits and xml2rfc.">Validate (idnits)</button> </div> </div> <div class="row mt-2"> <div class="d-grid gap-2"> <a href="#" class="btn btn-success btn-lg" id="buttonDownload" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Download the output file.">Download</a> <div class="d-grid gap-2 d-md-flex justify-content-md-end"> <a href="#" class="btn btn-link" id="buttonOpen" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Open the output file in your web browser.">Open in web browser</a> </div> </div> </div> <div class="row mt-2 diff" id="divDiff"> </div> <div class="row mt-2"> <div class="accordion" id="accordionValidation"> <div class="accordion-item" id="accordionItemWarnings"> <h2 class="accordion-header" id="panelsWarningsHeading"> <button class="accordion-button" type="button" data-bs-toggle="collapse" data-bs-target="#panelsWarnings" aria-expanded="true" aria-controls="panelsWarnings"> Warnings </button> </h2> <div id="panelsWarnings" class="accordion-collapse collapse show" aria-labelledby="panelsWarningsHeading"> <div class="accordion-body"> <ul id="listWarnings"></ul> </div> </div> </div> <div class="accordion-item" id="accordionItemErrors"> <h2 class="accordion-header" id="panelsErrorsHeading"> <button class="accordion-button" type="button" data-bs-toggle="collapse" data-bs-target="#panelsErrors" aria-expanded="true" aria-controls="panelsErrors"> Errors </button> </h2> <div id="panelsErrors" class="accordion-collapse collapse show" aria-labelledby="panelsErrorsHeading"> <div class="accordion-body"> <ul id="listErrors"></ul> </div> </div> </div> <div class="accordion-item" id="accordionItemIdnits"> <h2 class="accordion-header" id="panelsIdnitsHeading"> <button class="accordion-button" type="button" data-bs-toggle="collapse" data-bs-target="#panelsIdnits" aria-expanded="true" aria-controls="panelsIdnits"> Idnits </button> </h2> <div id="panelsIdnits" class="accordion-collapse collapse show" aria-labelledby="panelsIdnitsHeading"> <div class="accordion-body"> <pre id="preIdnits" class="pre-scrollable"></pre> </div> </div> </div> <div class="accordion-item" id="accordionItemBareUnicode"> <h2 class="accordion-header" id="panelsBareUnicodeHeading"> <button class="accordion-button" type="button" data-bs-toggle="collapse" data-bs-target="#panelsBareUnicode" aria-expanded="true" aria-controls="panelsBareUnicode" title="These are not warnings. For informational purposes only."> INFORMATIONAL: Bare Unicode Usage </button> </h2> <div id="panelsBareUnicode" class="accordion-collapse collapse show" aria-labelledby="panelsBareUnicodeHeading"> <div class="accordion-body"> <ul id="listBareUnicode"></ul> </div> </div> </div> <div class="accordion-item" id="accordionItemNonASCII"> <h2 class="accordion-header" id="panelsNonASCIIHeading"> <button class="accordion-button" type="button" data-bs-toggle="collapse" data-bs-target="#panelsNonASCII" aria-expanded="true" aria-controls="panelsNonASCII" title="These are not warnings. For informational purposes."> INFORMATIONAL: Non-ASCII Characters (kramdown-rfc echars) </button> </h2> <div id="panelsNonASCII" class="accordion-collapse collapse show" aria-labelledby="panelsNonASCIIHeading"> <div class="accordion-body"> <pre id="preNonASCII" class="pre-scrollable"></pre> </div> </div> </div> </div> </div> <div class="row mt-2"> <div class="col-sm-3"> <div class="card h-100"> <div class="card-body"> <h5 class="card-title">Compare drafts</h5> <p class="card-text">Compare drafts with rfcdiff</p> <a href="/iddiff" class="btn btn-secondary">rfcdiff</a> </div> </div> </div> <div class="col-sm-3"> <div class="card h-100"> <div class="card-body"> <h5 class="card-title">BibXML Service</h5> <p class="card-text">Replacement is available at <a href="https://bib.ietf.org">bib.ietf.org</a>.</p> <a href="https://bib.ietf.org" class="btn btn-secondary">BibXML</a> </div> </div> </div> <div class="col-sm-3"> <div class="card h-100"> <div class="card-body"> <h5 class="card-title">ABNF Tools</h5> <p class="card-text">BAP is available in ABNF (Augmented Backus-Naur Form) tools.</p> <a href="/abnf" class="btn btn-secondary">ABNF Tools</a> </div> </div> </div> <div class="col-sm-3"> <div class="card h-100"> <div class="card-body"> <h5 class="card-title">Ready to submit?</h5> <p class="card-text">Submit your Internet-Draft via Datatracker.</p> <a href="https://datatracker.ietf.org/submit" class="btn btn-secondary">Internet-Draft submission</a> </div> </div> </div> </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/main.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:'8e7201f4ed424bbc',t:'MTczMjM3MzgwNS4wMDAwMDA='};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>