Don't like ads? Go Ad-Free Today

RSS / Atom Feed Generator

DataDeveloperText
ADVERTISEMENT · REMOVE?

Feed Metadata

The canonical URL of the website this feed represents.
Optional canonical URL of the feed itself (used in atom:link rel=self).
ISO language code (e.g. en, en-us, fr).
Permanent, unique identifier for the feed. Defaults to Site URL.

Items

One item per block. Use "key: value" lines. Separate items with a line containing only "---". Recognized keys: title, link, description, content, pubDate, guid, author, category.
ADVERTISEMENT · REMOVE?

Guide

RSS / Atom Feed Generator

RSS / Atom Feed Generator

Build a strictly spec-compliant RSS 2.0 or Atom 1.0 XML feed in seconds. Fill in your channel metadata, paste a block of items, and copy or download a feed that passes the W3C Feed Validator on the first try — proper XML escaping, RFC 822 / RFC 3339 dates, CDATA-wrapped full content, namespaces, and a self link all handled for you.

How to Use

  1. Pick the feed type: RSS 2.0 (widest reader support) or Atom 1.0 (stricter spec, namespaced).
  2. Fill in the feed metadata — title, site URL, description, and any optional fields like language, copyright, or author.
  3. Optionally provide a Self URL so readers can rediscover the feed (added as atom:link rel="self").
  4. Paste your items into the Items field. Each item is a block of key: value lines; separate items with a line containing only ---.
  5. The generated XML appears on the right as you type. Copy it, or click Download to save feed.xml / atom.xml.

Features

  • RSS 2.0 and Atom 1.0 — Toggle between the two specs; the right metadata fields appear automatically.
  • Strict XML escaping&, <, >, ", and ' are escaped wherever they belong.
  • RFC 822 & RFC 3339 date formatting — Type any reasonable date (ISO 8601, YYYY-MM-DD HH:MM:SS, or plain dates); the tool emits the correct format for the chosen feed type.
  • CDATA-wrapped full content — Use content: for full HTML article bodies; the tool wraps it safely and splits any stray ]]> sequences.
  • Categories & tags — Comma-separated category values render as separate <category> elements (RSS) or <category term=""/> entries (Atom).
  • Live validation — Inline warnings flag missing required fields, unparseable dates, and invalid URLs so the feed clears strict parsers like Feedparser.
  • Self-link & generator tags — Optional atom:link rel="self" for both formats, plus an auto-inserted <generator> element.
  • Zero round-trip — Everything runs in the browser; your feed data never leaves the page.

FAQ

  1. What is the difference between RSS 2.0 and Atom 1.0?

    Both are XML formats for publishing frequently updated content, but they were designed differently. RSS 2.0 is older, simpler, and looser about which fields are required — items can have just a title or just a description. Atom 1.0 came later (2005) as an IETF standard, with stricter rules: every entry needs a unique , a , and an timestamp. Atom also uses XML namespaces properly and supports both summaries and full content as distinct elements, while RSS overloads for both.</p> </div> </li> <li id="faq-question-1780452523995" class="rank-math-list-item"> <h4 class="rank-math-question ">Why does the date format matter so much in feeds?</h4> <div class="rank-math-answer "> <p>Feed readers parse dates to sort entries, detect new items, and display "published 2 hours ago" timestamps. The two formats use different date conventions: RSS 2.0 mandates RFC 822 (e.g. "Wed, 15 Jan 2025 10:30:00 +0000"), while Atom 1.0 mandates RFC 3339 / ISO 8601 (e.g. "2025-01-15T10:30:00Z"). A feed with malformed dates may be silently rejected by strict parsers like feedparser, or items may show up in the wrong order in clients like Feedly or NetNewsWire.</p> </div> </li> <li id="faq-question-1780452523996" class="rank-math-list-item"> <h4 class="rank-math-question ">What does CDATA mean in a feed's content element?</h4> <div class="rank-math-answer "> <p>CDATA stands for "Character Data" and tells the XML parser to treat everything inside as raw text, skipping its normal parsing rules. It is wrapped as . Feeds use CDATA inside (RSS) or (Atom) so authors can embed full HTML markup — anchor tags, images, formatted text — without manually escaping every and & character. The one tricky case is that the literal sequence ]]> cannot appear inside a CDATA section, so generators split it across two CDATA blocks.</p> </div> </li> <li id="faq-question-1780452523997" class="rank-math-list-item"> <h4 class="rank-math-question ">What is the role of the or element?</h4> <div class="rank-math-answer "> <p>It is the permanent, unique identifier the feed reader uses to recognise the same item across refreshes. Without a stable id, the reader treats every refresh as if all items were new, spamming the inbox. In RSS the element is and may include an isPermaLink attribute; in Atom the element is and must be a URI. Best practice is to use the canonical URL of the post and never change it, even if the post's title or URL slug is later edited.</p> </div> </li> <li id="faq-question-1780452523998" class="rank-math-list-item"> <h4 class="rank-math-question ">Why do many feed validators reject AI-generated feeds?</h4> <div class="rank-math-answer "> <p>Validators like the W3C Feed Validation Service check three things: well-formed XML (matched tags, escaped entities, declared namespaces), spec compliance (required elements present, in the right structure), and date format correctness. AI text generators often produce "approximate" XML that looks right at a glance but fails on details — missing namespace declarations, raw ampersands in URLs, ISO dates in an RSS document, or items missing required guid/id elements. A purpose-built generator enforces these rules deterministically rather than statistically.</p> </div> </li> </ol> </div> </div> </div> </div><!-- .col --> <div class="col aw--col-300 side-content"> <a href="https://iotools.cloud/pricing/" class="info-box mb-3" style="background-color: var(--io-color-blue, #464aff);letter-spacing:0;min-height:70px;padding-top:5px;"> <div class="info-box-content"> <span class="info-box-text text-sm white">Want To enjoy an ad-free experience?</span> <span class="info-box-number white" style="font-weight: 500;"> <span class="white"><u>Go Ad-Free Today</u></span> </span> </div> <span class="info-box-icon white" style="width:50px"> <i class="ti"></i> </span> </a> <div class="card card-body pb-0"> <h2 class="h5 blue mb-1"> <i class="ti"></i> Install Our Extensions </h2> <p class="mb-2"> Add IO tools to your favorite browser for instant access and faster searching </p> <div class="text-center pt-1 pb-3"> <div id="io-browser-extension-d41d8cd9" class="d-none d-lg-block"> <div class="io-browser-extension-container d-flex justify-content-center"> <a href="https://chromewebstore.google.com/detail/io-tools-quick-access/ngfigjoligkblljadlbojinhoiofkdld" target="_blank" rel="noopener" class="io-browser-extension-btn " data-toggle="tooltip" data-placement="top" title="Add to Chrome" style="cursor: pointer;"> Add to <img src="https://iotools.cloud/wp-content/themes/iotools/assets/images/browsers/chrome.svg" width="18" height="18" alt="Chrome Extension" class="img-fluid"> </a> <a href="https://microsoftedge.microsoft.com/addons/detail/io-tools-quick-access/daapkanhnnjodjpobfmkopolagbkcccb" target="_blank" rel="noopener" class="io-browser-extension-btn " data-toggle="tooltip" data-placement="top" title="Add to Edge" style="cursor: pointer;"> Add to <img src="https://iotools.cloud/wp-content/themes/iotools/assets/images/browsers/edge.svg" width="18" height="18" alt="Edge Extension" class="img-fluid"> </a> <a href="https://addons.mozilla.org/en-US/firefox/addon/iotools-quick-access/" target="_blank" rel="noopener" class="io-browser-extension-btn " data-toggle="tooltip" data-placement="top" title="Add to Firefox" style="cursor: pointer;"> Add to <img src="https://iotools.cloud/wp-content/themes/iotools/assets/images/browsers/firefox.svg" width="18" height="18" alt="Firefox Extension" class="img-fluid"> </a> <a href="https://addons.opera.com/en/extensions/details/io-tools-quick-access/" target="_blank" rel="noopener" class="io-browser-extension-btn " data-toggle="tooltip" data-placement="top" title="Add to Opera" style="cursor: pointer;"> Add to <img src="https://iotools.cloud/wp-content/themes/iotools/assets/images/browsers/opera.svg" width="18" height="18" alt="Opera Extension" class="img-fluid"> </a> <style> #io-browser-extension-d41d8cd9 .io-browser-extension-container { gap: 10px; margin-left: -1px; } #io-browser-extension-d41d8cd9 .io-browser-extension-btn { display: flex; padding: 3px 5px 1px 6px;; background-color: white; border: 1px solid #dee2e6; border-radius: 12px; text-decoration: none; transition: all 0.2s ease; font-size: 12px;; color: #000!important; align-items: center; justify-content: center; gap: 2px; flex-grow: 1;; } #io-browser-extension-d41d8cd9 .io-browser-extension-btn img { transform: translateY(-1px); } #io-browser-extension-d41d8cd9 .io-browser-extension-btn:hover { background-color: #f8f9fa; border-color: #ced4da; color: #333; text-decoration: none; } </style> </div> </div> </div> </div> <div class="card card-body pb-0"> <h2 class="h5 blue mb-1"> <i class="ti">恵</i><a href="https://scoreboard.iotools.cloud/" target="_blank" rel="noopener"> Scoreboard Has Arrived!</a> </h2> <p class="mb-2"> <a href="https://scoreboard.iotools.cloud/" target="_blank" rel="noopener">Scoreboard</a> is a fun way to keep track of your games, all data is stored in your browser. More features are coming soon! </p> </div> <div class="aw aw-side_content_1_desktop text-center mb-4"><div style="text-align: center;color: #9f9f9f;font-size: 9px;letter-spacing: 1px;line-height: 25px;height: 25px;width: 100%;">ADVERTISEMENT · <a tabindex="-1" target="_blank" href="https://iotools.cloud/pricing/" title="Go Ad-free" style="text-decoration: underline;color: #9f9f9f;">REMOVE?</a></div> <!-- Iotools_S2S_SideContent1_Desktop_ROS --> <style> @media only screen and (min-width: 0px) and (min-height: 0px) { div[id^="bsa-zone_1741342473519-9_123456"] { min-width: 0px; min-height: 0px; } } @media only screen and (min-width: 1370px) and (min-height: 0px) { div[id^="bsa-zone_1741342473519-9_123456"] { min-width: 200px; min-height: 250px; } } </style> <div id="bsa-zone_1741342473519-9_123456"></div> </div> <div class="card card-body pb-0"> <div class="d-flex justify-content-between align-items-center mb-3"> <h2 class="h5 blue mb-0"><i class="ti"></i> Must-Try Tools</h2> <a class="text-muted small blue" href="https://iotools.cloud/tags/must-try/"><u>View All</u></a> </div> <div class="card card--tool card--tool-compact card--tool-compact--mini elevation-0 border card--tool-has-icon"> <a href="https://iotools.cloud/tool/imagekit/background-remover/" class="card-image card-image--icon" aria-label="Background Remover"> <i class="ti blue" style="--icon-hex:'\f360'"></i> </a> <span class="card-image card-image--icon" data-toggle="tooltip" title="Toolset: ImageKit" ><i class="ti blue" style="--icon-hex:'\f360'"></i></span> <a class="card-body flex-row align-items-center h6 mb-0 black" href="https://iotools.cloud/tool/imagekit/background-remover/"> Background Remover </a> </div> <div class="card card--tool card--tool-compact card--tool-compact--mini elevation-0 border card--tool-has-icon"> <a href="https://iotools.cloud/tool/ai-image-editor/" class="card-image card-image--icon" aria-label="AI Image Editor"> <i class="ti blue" style="--icon-hex:'\fa32'"></i> </a> <a class="card-body flex-row align-items-center h6 mb-0 black" href="https://iotools.cloud/tool/ai-image-editor/"> AI Image Editor<span class="io-badge io-badge--toolset" style="background-color: #92ff9580;color:#10a581" data-toggle="tooltip" title="Toolset" data-content="Toolset"></span> </a> </div> <div class="card card--tool card--tool-compact card--tool-compact--mini elevation-0 border card--tool-has-icon"> <a href="https://iotools.cloud/tool/ai-image-generator/" class="card-image card-image--icon" aria-label="AI Image Generator"> <i class="ti blue" style="--icon-hex:'\ffb0'"></i> </a> <a class="card-body flex-row align-items-center h6 mb-0 black" href="https://iotools.cloud/tool/ai-image-generator/"> AI Image Generator </a> </div> <div class="card card--tool card--tool-compact card--tool-compact--mini elevation-0 border card--tool-has-icon"> <a href="https://iotools.cloud/tool/imagekit/" class="card-image card-image--icon" aria-label="ImageKit"> <i class="ti blue" style="--icon-hex:'\f360'"></i> </a> <a class="card-body flex-row align-items-center h6 mb-0 black" href="https://iotools.cloud/tool/imagekit/"> ImageKit<span class="io-badge io-badge--toolset" style="background-color: #92ff9580;color:#10a581" data-toggle="tooltip" title="Toolset" data-content="Toolset"></span> </a> </div> <div class="card card--tool card--tool-compact card--tool-compact--mini elevation-0 border card--tool-has-icon"> <a href="https://iotools.cloud/tool/pdf-converter/compress-pdf/" class="card-image card-image--icon" aria-label="PDF Compressor"> <i class="ti blue" style="--icon-hex:'\ed44'"></i> </a> <span class="card-image card-image--icon" data-toggle="tooltip" title="Toolset: PDF Converter" ><i class="ti blue" style="--icon-hex:'\f7ac'"></i></span> <a class="card-body flex-row align-items-center h6 mb-0 black" href="https://iotools.cloud/tool/pdf-converter/compress-pdf/"> PDF Compressor </a> </div> <div class="card card--tool card--tool-compact card--tool-compact--mini elevation-0 border card--tool-has-icon"> <a href="https://iotools.cloud/tool/image-converter/" class="card-image card-image--icon" aria-label="Image Converter"> <i class="ti blue" style="--icon-hex:'\fd9f'"></i> </a> <a class="card-body flex-row align-items-center h6 mb-0 black" href="https://iotools.cloud/tool/image-converter/"> Image Converter<span class="io-badge io-badge--toolset" style="background-color: #92ff9580;color:#10a581" data-toggle="tooltip" title="Toolset" data-content="Toolset"></span> </a> </div> <div class="card card--tool card--tool-compact card--tool-compact--mini elevation-0 border card--tool-has-icon"> <a href="https://iotools.cloud/tool/one-time-link/" class="card-image card-image--icon" aria-label="One Time Link"> <i class="ti blue" style="--icon-hex:'\f7bd'"></i> </a> <a class="card-body flex-row align-items-center h6 mb-0 black" href="https://iotools.cloud/tool/one-time-link/"> One Time Link </a> </div> </div> <div class="aw aw-side_content_2_desktop text-center mb-4"><div style="text-align: center;color: #9f9f9f;font-size: 9px;letter-spacing: 1px;line-height: 25px;height: 25px;width: 100%;">ADVERTISEMENT · <a tabindex="-1" target="_blank" href="https://iotools.cloud/pricing/" title="Go Ad-free" style="text-decoration: underline;color: #9f9f9f;">REMOVE?</a></div> <!-- Iotools_S2S_SideContent2_Desktop_ROS --> <style> @media only screen and (min-width: 0px) and (min-height: 0px) { div[id^="bsa-zone_1741342696932-0_123456"] { min-width: 0px; min-height: 0px; } } @media only screen and (min-width: 1370px) and (min-height: 0px) { div[id^="bsa-zone_1741342696932-0_123456"] { min-width: 200px; min-height: 250px; } } </style> <div id="bsa-zone_1741342696932-0_123456"></div> </div> <div class="card card-body pb-0"> <div class="d-flex justify-content-between align-items-center mb-3"> <h2 class="h5 blue mb-0"> <i class="ti"></i> New Arrivals </h2> <a class="text-muted small blue" href="https://iotools.cloud/tools/"><u>View All</u></a> </div> <div class="card card--tool card--tool-compact card--tool-compact--mini elevation-0 border card--tool-has-icon"> <a href="https://iotools.cloud/tool/markdown-link-image-extractor/" class="card-image card-image--icon" aria-label="Markdown Link & Image Extractor"> <i class="ti blue" style="--icon-hex:'\ec41'"></i> </a> <a class="card-body flex-row align-items-center h6 mb-0 black" href="https://iotools.cloud/tool/markdown-link-image-extractor/"> Markdown Link & Image Extractor </a> </div> <div class="card card--tool card--tool-compact card--tool-compact--mini elevation-0 border card--tool-has-icon"> <a href="https://iotools.cloud/tool/excel-xlsx-to-csv-converter/" class="card-image card-image--icon" aria-label="Excel (XLSX) to CSV Converter"> <i class="ti blue" style="--icon-hex:'\eba1'"></i> </a> <a class="card-body flex-row align-items-center h6 mb-0 black" href="https://iotools.cloud/tool/excel-xlsx-to-csv-converter/"> Excel (XLSX) to CSV Converter </a> </div> <div class="card card--tool card--tool-compact card--tool-compact--mini elevation-0 border card--tool-has-icon"> <a href="https://iotools.cloud/tool/prettier-config-generator/" class="card-image card-image--icon" aria-label="Prettier Config Generator"> <i class="ti blue" style="--icon-hex:'\ebcc'"></i> </a> <a class="card-body flex-row align-items-center h6 mb-0 black" href="https://iotools.cloud/tool/prettier-config-generator/"> Prettier Config Generator </a> </div> <div class="card card--tool card--tool-compact card--tool-compact--mini elevation-0 border card--tool-has-icon"> <a href="https://iotools.cloud/tool/css-loading-animation-generator/" class="card-image card-image--icon" aria-label="CSS Loading Animation Generator"> <i class="ti blue" style="--icon-hex:'\f226'"></i> </a> <a class="card-body flex-row align-items-center h6 mb-0 black" href="https://iotools.cloud/tool/css-loading-animation-generator/"> CSS Loading Animation Generator </a> </div> <div class="card card--tool card--tool-compact card--tool-compact--mini elevation-0 border card--tool-has-icon"> <a href="https://iotools.cloud/tool/sleep-cycle-calculator/" class="card-image card-image--icon" aria-label="Sleep Cycle & Wake-Up Time Calculator"> <i class="ti blue" style="--icon-hex:'\eaf8'"></i> </a> <a class="card-body flex-row align-items-center h6 mb-0 black" href="https://iotools.cloud/tool/sleep-cycle-calculator/"> Sleep Cycle & Wake-Up Time Calculator </a> </div> <div class="card card--tool card--tool-compact card--tool-compact--mini elevation-0 border card--tool-has-icon"> <a href="https://iotools.cloud/tool/haskell-code-formatter/" class="card-image card-image--icon" aria-label="Haskell Code Formatter (Fourmolu / Ormolu Style)"> <i class="ti blue" style="--icon-hex:'\f541'"></i> </a> <a class="card-body flex-row align-items-center h6 mb-0 black" href="https://iotools.cloud/tool/haskell-code-formatter/"> Haskell Code Formatter (Fourmolu / Ormolu Style) </a> </div> <div class="card card--tool card--tool-compact card--tool-compact--mini elevation-0 border card--tool-has-icon"> <a href="https://iotools.cloud/tool/dca-calculator/" class="card-image card-image--icon" aria-label="Dollar Cost Averaging (DCA) Calculator"> <i class="ti blue" style="--icon-hex:'\ea5c'"></i> </a> <a class="card-body flex-row align-items-center h6 mb-0 black" href="https://iotools.cloud/tool/dca-calculator/"> Dollar Cost Averaging (DCA) Calculator </a> </div> <p class="small text-muted mb-3 text-center"><b>Update:</b> Our <a href="https://iotools.cloud/tool/rss-atom-feed-generator/" class="text-muted"><u>latest tool</u></a> was added on Jun 10, 2026</p> </div> <div class="aw aw-dashboard_sidebar text-center mb-4"><div style="text-align: center;color: #9f9f9f;font-size: 9px;letter-spacing: 1px;line-height: 25px;height: 25px;width: 100%;">ADVERTISEMENT · <a tabindex="-1" target="_blank" href="https://iotools.cloud/pricing/" title="Go Ad-free" style="text-decoration: underline;color: #9f9f9f;">REMOVE?</a></div> <!-- Iotools_S2S_Dashboard_ROS --> <style> @media only screen and (min-width: 0px) and (min-height: 0px) { div[id^="bsa-zone_1741781122639-0_123456"] { min-width: 300px; min-height: 50px; } } @media only screen and (min-width: 900px) and (min-height: 0px) { div[id^="bsa-zone_1741781122639-0_123456"] { min-width: 200px; min-height: 200px; } } </style> <div id="bsa-zone_1741781122639-0_123456"></div> </div> <div class="card card-body io-no-scrollbar" style="max-height:700px;"> <h2 class="h5 blue mb-3"><i class="ti"></i> News Corner <small class="black">w/ Tech Highlights</small></h2> <div data-load-more-id="side-news" class="exclude--translation"> <div class="io-loading mb-3"> <div class="io-loading__item title"></div> <div class="io-loading__item"></div> <div class="io-loading__item"></div> <div class="io-loading__item"></div> </div> <div class="io-loading mb-3"> <div class="io-loading__item title"></div> <div class="io-loading__item"></div> <div class="io-loading__item"></div> <div class="io-loading__item"></div> </div> <div class="io-loading mb-3"> <div class="io-loading__item title"></div> <div class="io-loading__item"></div> <div class="io-loading__item"></div> <div class="io-loading__item"></div> </div> </div> <script class="exclude--lazy-load" async> // Immediately load news from session storage document.querySelectorAll('[data-load-more-id="side-news"]').forEach(function(element) { const dailyNewsHtml = sessionStorage.getItem(`dailyNewsHtml`); if (dailyNewsHtml) { element.innerHTML = dailyNewsHtml; } }); </script> <p class="text-center"> <button class="btn--load-more" data-load-more="{"target":"side-news","postType":"wprss_feed_item","offset":3}">Show Me More!</button> </p> </div> <h2 class="h5 blue text-right mt-5"><i class="ti ti-heart-handshake"></i> Get Involved</h2> <div class="text-right mb-4"> <p>Help us continue providing valuable free tools</p> <div class="d-lg-flex justify-content-end"> <a href="https://buymeacoffee.com/iotools" target="_blank" rel="noopener"><img width="180" height="50" src="https://iotools.cloud/wp-content/themes/iotools/assets/images/yellow-button.png" alt="Buy me a coffee" class="img-fluid"></a> </div> </div> <div class="aw aw-side_content_sticky_desktop sticky-top text-center"><div style="text-align: center;color: #9f9f9f;font-size: 9px;letter-spacing: 1px;line-height: 25px;height: 25px;width: 100%;">ADVERTISEMENT · <a tabindex="-1" target="_blank" href="https://iotools.cloud/pricing/" title="Go Ad-free" style="text-decoration: underline;color: #9f9f9f;">REMOVE?</a></div> <!-- Iotools_S2S_SideContentSticky_Desktop_ROS --> <style> @media only screen and (min-width: 0px) and (min-height: 0px) { div[id^="bsa-zone_1741342751312-1_123456"] { min-width: 0px; min-height: 0px; } } @media only screen and (min-width: 1370px) and (min-height: 0px) { div[id^="bsa-zone_1741342751312-1_123456"] { min-width: 120px; min-height: 600px; } } </style> <div id="bsa-zone_1741342751312-1_123456"></div> </div> </div> </div><!-- .row --> </div><!-- .container --> </main><!-- #content --> <!-- Main Footer --> <footer class="main-footer text-sm text-center text-xl-left d-flex flex-xl-nowrap flex-column-reverse flex-xl-row"> <span>Copyright © 2026 <a href="https://iotools.cloud" class="exclude--translation"><u>iotools.cloud</u></a>. All rights reserved.</span> <!-- To the right --> <ul class="navbar-nav d-flex flex-row ml-xl-auto justify-content-center flex-wrap"> <li class="nav-item "> <a href="https://iotools.cloud" class="text-muted">Home</a> </li> <li class="nav-item "> <a href="https://iotools.cloud/about/" class="text-muted">About</a> </li> <li class="nav-item "> <a href="https://iotools.cloud/contact/" class="text-muted">Contact</a> </li> <li class="nav-item "> <a href="https://iotools.cloud/pricing/" class="text-muted">Pricing</a> </li> <li class="nav-item blue mb-2 mb-xl-0"> • </li> <li class="nav-item"><a href="https://iotools.cloud/community-tools/" rel="nofollow" class="text-muted">Community Tools</a></li> <li class="nav-item"><a href="https://iotools.cloud/journal/" class="text-muted">Journal Hub</a></li> <li class="nav-item blue mb-2 mb-xl-0"> • </li> <li class="nav-item"><a href="https://iotools.cloud/privacy-policy/" class="text-muted">Privacy Policy</a></li> <li class="nav-item"><a href="https://iotools.cloud/terms-of-service/" class="text-muted">Terms of Service</a></li> <li class="nav-item"><a href="https://iotools.statuspage.io/" target="_blank" rel="noopener" class="text-muted">System Status</a></li> <li class="nav-item"><a href="https://iotools.cloud/sitemap/" class="text-muted">Sitemap</a></li> <li class="nav-item blue mb-2 mb-xl-0 d-none d-lg-block"> • </li> <li class="d-block w-100 d-lg-none"></li> <li class="nav-item"><a href="https://x.com/io_tools" target="_blank" rel="noopener" class="text-muted" aria-label="X"><i class="ti ti-brand-x"></i></a></li> <li class="nav-item"><a href="https://www.facebook.com/iotools.cloud" target="_blank" rel="noopener" class="text-muted" aria-label="Facebook"><i class="ti"></i></a></li> <li class="nav-item"><a href="https://www.youtube.com/@io-tools" target="_blank" rel="noopener" class="text-muted" aria-label="YouTube"><i class="ti"></i></a></li> <li class="nav-item"><a href="https://www.tiktok.com/@iotools" target="_blank" rel="noopener" class="text-muted" aria-label="TikTok"><i class="ti"></i></a></li> <li class="nav-item"><a href="https://www.linkedin.com/company/io-tools/" target="_blank" rel="noopener" class="text-muted" aria-label="linkedin"><i class="ti ti-brand-linkedin"></i></a></li> <li class="nav-item"><a href="https://www.producthunt.com/products/io-tools" target="_blank" rel="noopener" class="text-muted" aria-label="product hunt"><i class="ti ti-brand-producthunt"></i></a></li> </ul> </footer> <div class="bsa-gap d-none d-xl-block" style="height: 110px;"> </div> <div class="bsa-gap d-xl-none" style="height: 60px;"> </div> <style> body:has(>.bsa_fixed-leaderboard[style*="display: none"]) .bsa-gap { display: none !important; } </style> </div><!-- .wrapper --> <template id="tp-language" data-tp-language="en_US"></template><script type="speculationrules"> {"prerender":[{"source":"document","where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/wp-content/uploads/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/iotools/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prerender, .no-prerender a"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"moderate"}]} </script> <style> #ioValidationInfo:empty { display: none; } #ioValidationInfo.validation-success { background: #d4edda; border-color: #28a745; color: #155724; } #ioValidationInfo.validation-warning { background: #fff3cd; border-color: #ffc107; color: #856404; } #ioValidationInfo.validation-error { background: #f8d7da; border-color: #dc3545; color: #721c24; } .validation-line { margin-bottom: 4px; font-size: 13px; } .validation-line:last-child { margin-bottom: 0; } #rss-atom-feed-generator-out pre { max-height: 520px; } </style> <script type="text/javascript" src="https://iotools.cloud/wp-content/plugins/duracelltomi-google-tag-manager/dist/js/gtm4wp-form-move-tracker.js?ver=1.22.3" id="gtm4wp-form-move-tracker-js"></script> <script type="text/javascript" src="https://iotools.cloud/wp-content/plugins/translatepress-multilingual/assets/js/trp-clickable-ls.js?ver=2.9.12" id="trp-clickable-ls-js-js"></script> <script type="text/javascript" src="https://iotools.cloud/wp-includes/js/underscore.min.js?ver=1.13.7" id="underscore-js"></script> <script type="text/javascript" id="theme-js-js-extra"> /* <![CDATA[ */ var IOTools = {"ajaxUrl":"https://iotools.cloud/wp-admin/admin-ajax.php","assetsUrl":"https://iotools.cloud/wp-content/themes/iotools/assets/","homeUrl":"https://iotools.cloud","isMobile":"","currentPostId":"309450","turnstileSiteKey":"0x4AAAAAABroE5_aI0mWeJ_q","algoliaAppId":"1P44EFZA6Z","algoliaApiKey":"430f43bbda2ef03c2d61fbdf33bae284","urlRequests":"/requests/","creditsCap":"10","pondUploader":null,"tagColors":{"Accessibility":"indigo","AI":"red","arithmetic":"blue","Art":"orange","Backend":"red","base conversion":"blue","Base64":"blue","Beta":"red","Binary":"blue","Calculator":"blue","Character Classes":"blue","Color":"yellow","Couple":"blue","Creator":"blue","Cryptography":"yellow","CSS":"indigo","CSV":"green","Data":"gray","decimal":"blue","Decode":"yellow","Decrypt":"red","Designer":"cyan","Developer":"orange","devops":"blue","DnD":"blue","Education":"lime","Encode":"indigo","Encoding":"blue","Encryption":"blue","evaluation":"blue","Fantasy":"lime","Fiction":"blue","Finance":"green","Frontend":"red","Fun":"violet","Gaming":"blue","Generator":"blue","Git":"blue","Graphics":"red","Health":"orange","hex":"blue","History":"green","HTML":"green","Ideas":"orange","Identity":"lime","Image":"orange","instant calculation":"blue","integer":"blue","IPv6":"blue","Javascript":"orange","JPG":"blue","JSON":"yellow","logarithm":"blue","Lookup":"gray","MAC address":"blue","Magic":"yellow","Markdown":"blue","Marketing":"orange","mask":"blue","Match":"blue","Math":"yellow","MD5":"indigo","Minecraft":"blue","Music":"blue","Must Try":"red","Mythical":"blue","Networking":"blue","number systems":"blue","obfuscate":"blue","octal":"blue","PDF":"yellow","Performance":"green","Planning":"yellow","PNG":"blue","privacy":"blue","Productivity":"green","programming":"blue","Random":"red","Scheduling":"blue","Science":"blue","Security":"yellow","SEO":"orange","Social":"indigo","Sports":"blue","Statistics":"green","string":"blue","SVG":"orange","sysadmin":"blue","Testing":"orange","Text":"green","Time":"blue","trigonometry":"blue","ULA":"blue","Utilities":"blue","Video":"indigo","Wellness":"orange","Wizard":"blue","World":"blue","XML":"orange","YAML":"blue"},"translations":{"copiedDeepLink":"Copied deep link to clipboard!","copiedText":"Copied to clipboard!","copiedImage":"Copied image to clipboard!","generatedContentAppearsHere":"Result will appear here...","confirmOverwriteContent":"Current content will be replaced?","invalidBase64String":"Invalid base64 string","timeoutReached":"Timeout reached before finding the hash.","allCombinationsTried":"All combinations tried, but hash not found. Adjust the settings and try again.","useThisFont":"Use this font","noFileTypesDetected":"No file type detected. Original content may just be a text file or string.","noResults":"No results found","loadMore":"Load more","decodedString":"Decoded string","yes":"Yes","no":"No","team":"Team","detectedFile":"Detected file","download":"Download","converting":"Converting...","compressing":"Compressing...","tapToRemove":"Tap to remove","serverUploaded":"Uploaded to server","validationPassed":"Passed validation","validationFailed":"Failed validation","validationIndependently":"Generated code is validated independently","pokemon":{"generation":"Generation","hp":"HP","speed":"Speed","attack":"Attack","defense":"Defense","spAttack":"Special Attack","spDefense":"Special Defence"},"browserInfo":{"userAgent":"User Agent","language":"Language","windowSize":"Window Size","pdfViewerEnabled":"PDF Viewer Enabled","javascriptEnabled":"Javascript Enabled","cookiesEnabled":"Cookies Enabled","browser":"Browser","browserMajorVersion":"Browser Major Version","browserVersion":"Browser Version","layoutEngine":"Layout Engine","deviceMemory":"Device Memory","maxTouchPoints":"Max Touch Points","screenSize":"Screen Size","orientation":"Orientation","colorDepth":"Color Depth","pixelRatio":"Pixel Ratio","os":"OS","osVersion":"OS Version","deviceType":"Device Type","deviceVendor":"Device Vendor","deviceModel":"Device Model"},"splits":"Splits","noImagesSelected":"Please upload at least one file.","errorOccurredAI":"Failed to get AI content. Please try again.","errorOccurredExtractText":"Failed to extract file content. Please try again.","errorOccurredPokemon":"No Pok\u00e9mon found with the given criteria.","errorCannotConvert":"Cannot convert","autoComplete":{"Tools":"Tools","Modules":"Modules","SearchForATool":"Search for a tool, category, or tag...","NoToolsFoundForThisQuery":"No tools found for this query.","SubmitARequest":"Submit a request","WeWillMakeIt":"and we'll make it!","CategoriesFilter":"Categories Filter","NoCategoriesFoundForThisQuery":"No categories found for this query.","TagsFilter":"Tags Filter","NoTagsFoundForThisQuery":"No tags found for this query.","ToNavigate":"to navigate","ToSelect":"to select","ToClose":"to close","ToCancel":"Cancel"}},"defaultSwatches":["#264653","#2a9d8f","#e9c46a","rgb(244,162,97)","#e76f51","#d62828","navy","#07b","#0096c7","#00b4d880","rgba(0,119,182,0.8)"]}; //# sourceURL=theme-js-js-extra /* ]]> */ </script> <script type="text/javascript" src="https://iotools.cloud/wp-content/themes/iotools/dist/main.min.js?ver=9845071bcbd29796f832e7752732e809" id="theme-js-js"></script> <script type="text/javascript" src="https://iotools.cloud/wp-content/themes/iotools/dist/modules/ecd9f1b4f0f25d49b3dd988bd5612eca.min.js?ver=717b64d9a85463b837c77b82641b9060" id="theme-js-ecd9f1b4f0f25d49b3dd988bd5612eca-js"></script> <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/highlight.min.js?ver=9845071bcbd29796f832e7752732e809" id="highlight-js-js"></script> <script id="wp-emoji-settings" type="application/json"> {"baseUrl":"https://s.w.org/images/core/emoji/17.0.2/72x72/","ext":".png","svgUrl":"https://s.w.org/images/core/emoji/17.0.2/svg/","svgExt":".svg","source":{"concatemoji":"https://iotools.cloud/wp-includes/js/wp-emoji-release.min.js?ver=6.9.1"}} </script> <script type="module"> /* <![CDATA[ */ /*! This file is auto-generated */ const a=JSON.parse(document.getElementById("wp-emoji-settings").textContent),o=(window._wpemojiSettings=a,"wpEmojiSettingsSupports"),s=["flag","emoji"];function i(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(o,JSON.stringify(t))}catch(e){}}function c(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0);const a=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);return t.every((e,t)=>e===a[t])}function p(e,t){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var n=e.getImageData(16,16,1,1);for(let e=0;e<n.data.length;e++)if(0!==n.data[e])return!1;return!0}function u(e,t,n,a){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\udde8\ud83c\uddf6","\ud83c\udde8\u200b\ud83c\uddf6")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!a(e,"\ud83e\u1fac8")}return!1}function f(e,t,n,a){let r;const o=(r="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):document.createElement("canvas")).getContext("2d",{willReadFrequently:!0}),s=(o.textBaseline="top",o.font="600 32px Arial",{});return e.forEach(e=>{s[e]=t(o,e,n,a)}),s}function r(e){var t=document.createElement("script");t.src=e,t.defer=!0,document.head.appendChild(t)}a.supports={everything:!0,everythingExceptFlag:!0},new Promise(t=>{let n=function(){try{var e=JSON.parse(sessionStorage.getItem(o));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(s),u.toString(),c.toString(),p.toString()].join(",")+"));",a=new Blob([e],{type:"text/javascript"});const r=new Worker(URL.createObjectURL(a),{name:"wpTestEmojiSupports"});return void(r.onmessage=e=>{i(n=e.data),r.terminate(),t(n)})}catch(e){}i(n=f(s,u,c,p))}t(n)}).then(e=>{for(const n in e)a.supports[n]=e[n],a.supports.everything=a.supports.everything&&a.supports[n],"flag"!==n&&(a.supports.everythingExceptFlag=a.supports.everythingExceptFlag&&a.supports[n]);var t;a.supports.everythingExceptFlag=a.supports.everythingExceptFlag&&!a.supports.flag,a.supports.everything||((t=a.source||{}).concatemoji?r(t.concatemoji):t.wpemoji&&t.twemoji&&(r(t.twemoji),r(t.wpemoji)))}); //# sourceURL=https://iotools.cloud/wp-includes/js/wp-emoji-loader.min.js /* ]]> */ </script> <script type="text/javascript">(function (undefined) {let scriptOptions={"_localizedStrings":{"redirect_overlay_title":"Hold On","redirect_overlay_text":"You are being redirected to another page,<br>it may take a few seconds.","webview_notification_text":"The selected provider doesn't support embedded browsers!"},"_targetWindow":"prefer-popup","_redirectOverlay":"overlay-with-spinner-and-message","_unsupportedWebviewBehavior":""}; /** * Used when Cross-Origin-Opener-Policy blocked the access to the opener. We can't have a reference of the opened windows, so we should attempt to refresh only the windows that has opened popups. */ window._nslHasOpenedPopup = false; window._nslWebViewNoticeElement = null; window.NSLPopup = function (url, title, w, h) { /** * Cross-Origin-Opener-Policy blocked the access to the opener */ if (typeof BroadcastChannel === "function") { const _nslLoginBroadCastChannel = new BroadcastChannel('nsl_login_broadcast_channel'); _nslLoginBroadCastChannel.onmessage = (event) => { if (window?._nslHasOpenedPopup && event.data?.action === 'redirect') { window._nslHasOpenedPopup = false; const url = event.data?.href; _nslLoginBroadCastChannel.close(); if (typeof window.nslRedirect === 'function') { window.nslRedirect(url); } else { window.opener.location = url; } } }; } const userAgent = navigator.userAgent, mobile = function () { return /\b(iPhone|iP[ao]d)/.test(userAgent) || /\b(iP[ao]d)/.test(userAgent) || /Android/i.test(userAgent) || /Mobile/i.test(userAgent); }, screenX = window.screenX !== undefined ? window.screenX : window.screenLeft, screenY = window.screenY !== undefined ? window.screenY : window.screenTop, outerWidth = window.outerWidth !== undefined ? window.outerWidth : document.documentElement.clientWidth, outerHeight = window.outerHeight !== undefined ? window.outerHeight : document.documentElement.clientHeight - 22, targetWidth = mobile() ? null : w, targetHeight = mobile() ? null : h, left = parseInt(screenX + (outerWidth - targetWidth) / 2, 10), right = parseInt(screenY + (outerHeight - targetHeight) / 2.5, 10), features = []; if (targetWidth !== null) { features.push('width=' + targetWidth); } if (targetHeight !== null) { features.push('height=' + targetHeight); } features.push('left=' + left); features.push('top=' + right); features.push('scrollbars=1'); const newWindow = window.open(url, title, features.join(',')); if (window.focus) { newWindow.focus(); } window._nslHasOpenedPopup = true; return newWindow; }; let isWebView = null; function checkWebView() { if (isWebView === null) { function _detectOS(ua) { if (/Android/.test(ua)) { return "Android"; } else if (/iPhone|iPad|iPod/.test(ua)) { return "iOS"; } else if (/Windows/.test(ua)) { return "Windows"; } else if (/Mac OS X/.test(ua)) { return "Mac"; } else if (/CrOS/.test(ua)) { return "Chrome OS"; } else if (/Firefox/.test(ua)) { return "Firefox OS"; } return ""; } function _detectBrowser(ua) { let android = /Android/.test(ua); if (/Opera Mini/.test(ua) || / OPR/.test(ua) || / OPT/.test(ua)) { return "Opera"; } else if (/CriOS/.test(ua)) { return "Chrome for iOS"; } else if (/Edge/.test(ua)) { return "Edge"; } else if (android && /Silk\//.test(ua)) { return "Silk"; } else if (/Chrome/.test(ua)) { return "Chrome"; } else if (/Firefox/.test(ua)) { return "Firefox"; } else if (android) { return "AOSP"; } else if (/MSIE|Trident/.test(ua)) { return "IE"; } else if (/Safari\//.test(ua)) { return "Safari"; } else if (/AppleWebKit/.test(ua)) { return "WebKit"; } return ""; } function _detectBrowserVersion(ua, browser) { if (browser === "Opera") { return /Opera Mini/.test(ua) ? _getVersion(ua, "Opera Mini/") : / OPR/.test(ua) ? _getVersion(ua, " OPR/") : _getVersion(ua, " OPT/"); } else if (browser === "Chrome for iOS") { return _getVersion(ua, "CriOS/"); } else if (browser === "Edge") { return _getVersion(ua, "Edge/"); } else if (browser === "Chrome") { return _getVersion(ua, "Chrome/"); } else if (browser === "Firefox") { return _getVersion(ua, "Firefox/"); } else if (browser === "Silk") { return _getVersion(ua, "Silk/"); } else if (browser === "AOSP") { return _getVersion(ua, "Version/"); } else if (browser === "IE") { return /IEMobile/.test(ua) ? _getVersion(ua, "IEMobile/") : /MSIE/.test(ua) ? _getVersion(ua, "MSIE ") : _getVersion(ua, "rv:"); } else if (browser === "Safari") { return _getVersion(ua, "Version/"); } else if (browser === "WebKit") { return _getVersion(ua, "WebKit/"); } return "0.0.0"; } function _getVersion(ua, token) { try { return _normalizeSemverString(ua.split(token)[1].trim().split(/[^\w\.]/)[0]); } catch (o_O) { } return "0.0.0"; } function _normalizeSemverString(version) { const ary = version.split(/[\._]/); return (parseInt(ary[0], 10) || 0) + "." + (parseInt(ary[1], 10) || 0) + "." + (parseInt(ary[2], 10) || 0); } function _isWebView(ua, os, browser, version, options) { switch (os + browser) { case "iOSSafari": return false; case "iOSWebKit": return _isWebView_iOS(options); case "AndroidAOSP": return false; case "AndroidChrome": return parseFloat(version) >= 42 ? /; wv/.test(ua) : /\d{2}\.0\.0/.test(version) ? true : _isWebView_Android(options); } return false; } function _isWebView_iOS(options) { const document = (window["document"] || {}); if ("WEB_VIEW" in options) { return options["WEB_VIEW"]; } return !("fullscreenEnabled" in document || "webkitFullscreenEnabled" in document || false); } function _isWebView_Android(options) { if ("WEB_VIEW" in options) { return options["WEB_VIEW"]; } return !("requestFileSystem" in window || "webkitRequestFileSystem" in window || false); } const options = {}, nav = window.navigator || {}, ua = nav.userAgent || "", os = _detectOS(ua), browser = _detectBrowser(ua), browserVersion = _detectBrowserVersion(ua, browser); isWebView = _isWebView(ua, os, browser, browserVersion, options); } return isWebView; } function isAllowedWebViewForUserAgent(provider) { const facebookAllowedWebViews = [ 'Instagram', 'FBAV', 'FBAN' ]; let whitelist = []; if (provider && provider === 'facebook') { whitelist = facebookAllowedWebViews; } const nav = window.navigator || {}, ua = nav.userAgent || ""; if (whitelist.length && ua.match(new RegExp(whitelist.join('|')))) { return true; } return false; } function disableButtonInWebView(providerButtonElement) { if (providerButtonElement) { providerButtonElement.classList.add('nsl-disabled-provider'); providerButtonElement.setAttribute('href', '#'); providerButtonElement.addEventListener('pointerdown', (e) => { if (!window._nslWebViewNoticeElement) { window._nslWebViewNoticeElement = document.createElement('div'); window._nslWebViewNoticeElement.id = "nsl-notices-fallback"; window._nslWebViewNoticeElement.addEventListener('pointerdown', function (e) { this.parentNode.removeChild(this); window._nslWebViewNoticeElement = null; }); const webviewNoticeHTML = '<div class="error"><p>' + scriptOptions._localizedStrings.webview_notification_text + '</p></div>'; window._nslWebViewNoticeElement.insertAdjacentHTML("afterbegin", webviewNoticeHTML); document.body.appendChild(window._nslWebViewNoticeElement); } }); } } window._nslDOMReady(function () { window.nslRedirect = function (url) { if (scriptOptions._redirectOverlay) { const overlay = document.createElement('div'); overlay.id = "nsl-redirect-overlay"; let overlayHTML = ''; const overlayContainer = "<div id='nsl-redirect-overlay-container'>", overlayContainerClose = "</div>", overlaySpinner = "<div id='nsl-redirect-overlay-spinner'></div>", overlayTitle = "<p id='nsl-redirect-overlay-title'>" + scriptOptions._localizedStrings.redirect_overlay_title + "</p>", overlayText = "<p id='nsl-redirect-overlay-text'>" + scriptOptions._localizedStrings.redirect_overlay_text + "</p>"; switch (scriptOptions._redirectOverlay) { case "overlay-only": break; case "overlay-with-spinner": overlayHTML = overlayContainer + overlaySpinner + overlayContainerClose; break; default: overlayHTML = overlayContainer + overlaySpinner + overlayTitle + overlayText + overlayContainerClose; break; } overlay.insertAdjacentHTML("afterbegin", overlayHTML); document.body.appendChild(overlay); } window.location = url; }; let targetWindow = scriptOptions._targetWindow || 'prefer-popup', lastPopup = false; document.addEventListener('click', function (e) { if (e.target) { const buttonLinkElement = e.target.closest('a[data-plugin="nsl"][data-action="connect"]') || e.target.closest('a[data-plugin="nsl"][data-action="link"]'); if (buttonLinkElement) { if (lastPopup && !lastPopup.closed) { e.preventDefault(); lastPopup.focus(); } else { let href = buttonLinkElement.href, success = false; if (href.indexOf('?') !== -1) { href += '&'; } else { href += '?'; } const redirectTo = buttonLinkElement.dataset.redirect; if (redirectTo === 'current') { href += 'redirect=' + encodeURIComponent(window.location.href) + '&'; } else if (redirectTo && redirectTo !== '') { href += 'redirect=' + encodeURIComponent(redirectTo) + '&'; } if (targetWindow !== 'prefer-same-window' && checkWebView()) { targetWindow = 'prefer-same-window'; } if (targetWindow === 'prefer-popup') { lastPopup = NSLPopup(href + 'display=popup', 'nsl-social-connect', buttonLinkElement.dataset.popupwidth, buttonLinkElement.dataset.popupheight); if (lastPopup) { success = true; e.preventDefault(); } } else if (targetWindow === 'prefer-new-tab') { const newTab = window.open(href + 'display=popup', '_blank'); if (newTab) { if (window.focus) { newTab.focus(); } success = true; window._nslHasOpenedPopup = true; e.preventDefault(); } } if (!success) { window.location = href; e.preventDefault(); } } } } }); let buttonCountChanged = false; const googleLoginButtons = document.querySelectorAll(' a[data-plugin="nsl"][data-provider="google"]'); if (googleLoginButtons.length && checkWebView()) { googleLoginButtons.forEach(function (googleLoginButton) { if (scriptOptions._unsupportedWebviewBehavior === 'disable-button') { disableButtonInWebView(googleLoginButton); } else { googleLoginButton.remove(); buttonCountChanged = true; } }); } const facebookLoginButtons = document.querySelectorAll(' a[data-plugin="nsl"][data-provider="facebook"]'); if (facebookLoginButtons.length && checkWebView() && /Android/.test(window.navigator.userAgent) && !isAllowedWebViewForUserAgent('facebook')) { facebookLoginButtons.forEach(function (facebookLoginButton) { if (scriptOptions._unsupportedWebviewBehavior === 'disable-button') { disableButtonInWebView(facebookLoginButton); } else { facebookLoginButton.remove(); buttonCountChanged = true; } }); } const separators = document.querySelectorAll('div.nsl-separator'); if (buttonCountChanged && separators.length) { separators.forEach(function (separator) { const separatorParentNode = separator.parentNode; if (separatorParentNode) { const separatorButtonContainer = separatorParentNode.querySelector('div.nsl-container-buttons'); if (separatorButtonContainer && !separatorButtonContainer.hasChildNodes()) { separator.remove(); } } }) } });})();</script> <div id="io-modal-login" class="modal fade" tabindex="-1" role="dialog"> <div class="modal-dialog modal-dialog-scrollable modal-md" role="document"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title">Sign In Required</h5> <button type="button" class="close" data-dismiss="modal" aria-label="Close"> <i class="ti ti-x" aria-hidden="true"></i> </button> </div> <div class="modal-body"> Please <a class="white bg-blue rounded p-1 pl-1 pr-2" rel="nofollow" href="https://iotools.cloud/account/"><i class="ti ti-user-circle"></i> sign in</a> or <a rel="nofollow" href="https://iotools.cloud/register/"><u>register</u></a> to manage your bookmarks. It's free! </div> </div> </div> </div> <div id="io-modal-request" class="modal fade" tabindex="-1" role="dialog"> <div class="modal-dialog modal-dialog-scrollable modal-md" role="document"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title">Sign In Required</h5> <button type="button" class="close" data-dismiss="modal" aria-label="Close"> <i class="ti ti-x" aria-hidden="true"></i> </button> </div> <div class="modal-body"> Please <a class="white bg-blue rounded p-1 pl-1 pr-2" rel="nofollow" href="https://iotools.cloud/account/?redirect_to=https://iotools.cloud/account/request-tool/"><i class="ti ti-user-circle"></i> sign in</a> or <a rel="nofollow" href="https://iotools.cloud/register/?redirect_to=https://iotools.cloud/account/request-tool/"><u>register</u></a> to submit a tool request. It's free! </div> </div> </div> </div> <div id="io-modal-community" class="modal fade" tabindex="-1" role="dialog"> <div class="modal-dialog modal-dialog-scrollable modal-md" role="document"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title">Sign In Required</h5> <button type="button" class="close" data-dismiss="modal" aria-label="Close"> <i class="ti ti-x" aria-hidden="true"></i> </button> </div> <div class="modal-body"> Please <a class="white bg-blue rounded p-1 pl-1 pr-2" rel="nofollow" href="https://iotools.cloud/account/?redirect_to=https://iotools.cloud/account/byo/"><i class="ti ti-user-circle"></i> sign in</a> or <a rel="nofollow" href="https://iotools.cloud/register/?redirect_to=https://iotools.cloud/account/byo/"><u>register</u></a> to build your own tool. It's free! <div class="card mt-4 mb-0"> <div class="card-body"> <h5><i class="ti ti-info-circle"></i> About Build Your Own (BYO) Builder</h5> <p>Our BYO Builder feature lets you create custom tools without any coding knowledge. You can:</p> <ul> <li>Create AI-powered tools using our simple interface</li> <li>Share your tools with the community</li> <li>Get feedback and improve your tools</li> <li>Help others solve problems with your creations</li> </ul> <p class="mb-0">Join our <a href="https://iotools.cloud/community-tools/"><u>community</u></a> today and start building tools that make a difference!</p> </div> </div> </div> </div> </div> </div> <div id="cf-turnstile" data-sitekey="0x4AAAAAABroE5_aI0mWeJ_q" data-appearance="execute"></div> </body> </html> <!-- Performance optimized by Redis Object Cache. Learn more: https://wprediscache.com Retrieved 20330 objects (6 MB) from Redis using Predis (v2.4.0). -->