Anúncios incomodam? Ir Sem anúncios Hoje

Gerador de Feed RSS / Atom

DadosDesenvolvedorTexto
ANUNCIADO Remover?

Metadados do Feed

A URL canônica do site que este feed representa.
URL canônica opcional do feed em si (usada em atom:link rel=self).
Código de idioma ISO (por exemplo, en, en-us, fr).
Identificador permanente e único para o feed. Padrão é a URL do Site.

Itens

Um item por bloco. Use linhas com a forma 'chave: valor'. Separe os itens com uma linha contendo apenas '---'. Chaves reconhecidas: título, link, descrição, conteúdo, pubDate, guid, autor, categoria.
ANUNCIADO Remover?

Guia

, e uma marcação de tempo. O Atom também usa namespaces corretamente e suporta ambos os resumos e conteúdo completo como elementos distintos, enquanto o RSS sobrecarrega  para ambos.

Gerador de Feed RSS / Atom

Crie um feed XML estritamente compatível com a especificação RSS 2.0 ou Atom 1.0 em segundos. Preencha seus metadados do canal, cole um bloco de itens e copie ou baixe um feed que passe no validador W3C na primeira tentativa — escapamento de XML, datas RFC 822 / RFC 3339, conteúdo envolto em CDATA, namespaces e link de auto-referência todos tratados para você.

Como usar

  1. Escolha o tipo de feed: RSS 2.0 (suporte mais amplo aos leitores) ou Atom 1.0 (especificação mais rígida, com namespaces).
  2. Preencha os metadados do feed — título, URL do site, descrição e quaisquer campos opcionais como idioma, direitos autorais ou autor.
  3. Opcionalmente forneça um URL do Próprio Feed para que os leitores possam re-descobrir o feed (adicionado como atom:link rel="self").
  4. Cole seus itens no campo de Itens. Cada item é um bloco de key: value linhas; separe os itens com uma linha contendo apenas ---.
  5. O XML gerado aparece à direita enquanto você digita. Copie-o ou clique em Download para salvar feed.xml / atom.xml.

Características

  • RSS 2.0 e Atom 1.0 — Alternar entre os dois specs; os campos de metadados corretos aparecem automaticamente.
  • Escapamento estrito de XML&, <, >, "e, e ' são escapadas onde pertencem.
  • Formatação de datas RFC 822 & RFC 3339 — Digite qualquer data razoável (ISO 8601, YYYY-MM-DD HH:MM:SS, ou datas simples); a ferramenta emite a formatação correta para o tipo de feed escolhido.
  • Conteúdo envolto em CDATA — Use content: para corpos completos de artigos HTML; a ferramenta os envolve de forma segura e divide qualquer sequência estranha ]]> .
  • Categorias e tags — Valores separados por vírgula category são renderizados como elementos separados (RSS) ou <category> entradas (Atom). <category term=""/> Validação em tempo real
  • — Avisos em linha indicam campos faltantes, datas não interpretáveis e URLs inválidas, para que o feed passe por analisadores rígidos como Feedparser. Links de auto-referência e tags generator
  • — Opcional para ambos os formatos, mais um inserido automaticamente Sem viagem de volta atom:link rel="self" — Tudo é executado no navegador; seus dados de feed nunca saem da página. <generator> elemento.
  • Qual a diferença entre RSS 2.0 e Atom 1.0? Ambos são formatos XML para publicação de conteúdo frequentemente atualizado, mas foram projetados de maneiras diferentes. O RSS 2.0 é mais antigo, simples e menos rigoroso quanto aos campos obrigatórios — os itens podem ter apenas um título ou apenas uma descrição. O Atom 1.0 veio depois (2005) como uma especificação da IETF, com regras mais rígidas: cada entrada precisa ter um único , um

Perguntas frequentes

  1. Por que a formatação da data é tão importante nos feeds?

    Os leitores de feeds analisam datas para ordenar entradas, detectar novos itens e exibir timestamps como "publicado há 2 horas". Os dois formatos usam convenções diferentes de datas: o RSS 2.0 exige o formato RFC 822 (por exemplo, "Ter, 15 Jan 2025 10:30:00 +0000"), enquanto o Atom 1.0 exige o formato RFC 3339 / ISO 8601 (por exemplo, "2025-01-15T10:30:00Z"). Um feed com datas mal formatadas pode ser rejeitado silenciosamente por analisadores rígidos como feedparser, ou os itens podem aparecer em ordem incorreta em clientes como Feedly ou NetNewsWire. , e uma data-hora. O Atom também utiliza namespaces XML corretamente e suporta sumários e conteúdo completo como elementos distintos, enquanto o RSS sobrecarrega ambos.</p> </div> </li> <li id="faq-question-1780452523995" class="rank-math-list-item"> <h4 class="rank-math-question">O que significa CDATA em um elemento de conteúdo de feed?</h4> <div class="rank-math-answer"> <p>CDATA significa "Character Data" e instrui o analisador XML a tratar tudo dentro como texto bruto, ignorando as regras normais de análise. É envolto como . Os feeds usam CDATA dentro de (RSS) ou (Atom) para que os autores possam incluir markup HTML completo — tags de link, imagens, texto formatado — sem precisar escapar manualmente cada e &. O caso delicado é que a sequência literal ]]> não pode aparecer dentro de uma seção CDATA, então geradores a dividem em dois blocos CDATA.</p> </div> </li> <li id="faq-question-1780452523996" class="rank-math-list-item"> <h4 class="rank-math-question">Qual é o papel do elemento ou ?</h4> <div class="rank-math-answer"> <p>É o identificador permanente e único que o leitor de feed usa para reconhecer o mesmo item em atualizações. Sem um identificador estável, o leitor trata cada atualização como se todos os itens fossem novos, spamando a caixa de entrada. No RSS, o elemento é e pode incluir um atributo isPermaLink; no Atom, o elemento é e deve ser uma URI. A prática recomendada é usar a URL canônica do post e nunca mudá-la, mesmo que o título ou o slug do post seja editado posteriormente.</p> </div> </li> <li id="faq-question-1780452523997" class="rank-math-list-item"> <h4 class="rank-math-question">Por que muitos validadores de feeds rejeitam feeds gerados por IA?</h4> <div class="rank-math-answer"> <p>Validadores como o Serviço de Validação de Feed W3C verificam três coisas: XML bem formado (tags correspondentes, entidades escapadas, namespaces declarados), conformidade com a especificação (elementos obrigatórios presentes, na estrutura correta) e correção da formatação de datas. Geradores de texto por IA frequentemente produzem XML "aproximado" que parece certo à primeira vista, mas falha em detalhes — falta de declaração de namespaces, ampersands brutos em URLs, datas ISO em um documento RSS ou itens faltando elementos obrigatórios guid/id. Um gerador especificamente projetado enforces essas regras de forma determinística, em vez de estatística.</p> </div> </li> <li id="faq-question-1780452523998" class="rank-math-list-item"> <h4 class="rank-math-question">Meu Blog Fantástico</h4> <div class="rank-math-answer"> <p>Uma breve descrição do feed (subtítulo no Atom).</p> </div> </li> </ol> </div> </div> </div> </div><!-- .col --> <div class="col aw--col-300 side-content"> <a href="https://iotools.cloud/pt/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">Quer eliminar anúncios?</span> <span class="info-box-number white" style="font-weight: 500;"> <span class="white"><u>Fique sem anúncios hoje mesmo</u></span> </span> </div> <span class="info-box-icon white" style="width:50px"> <i class="ti" data-no-translation=""></i> </span> </a> <div class="card card-body pb-0"> <h2 class="h5 blue mb-1"> <i class="ti" data-no-translation=""></i> Instale nossas extensões </h2> <p class="mb-2"> Adicione ferramentas de IO ao seu navegador favorito para acesso instantâneo e pesquisa mais rápida </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="Adicionar ao Chrome" style="cursor: pointer;"> Ao <img src="https://iotools.cloud/wp-content/themes/iotools/assets/images/browsers/chrome.svg" width="18" height="18" alt="Extensão do Chrome" 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="Adicionar ao Edge" style="cursor: pointer;"> Ao <img src="https://iotools.cloud/wp-content/themes/iotools/assets/images/browsers/edge.svg" width="18" height="18" alt="Extensão de Borda" 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="Adicionar ao Firefox" style="cursor: pointer;"> Ao <img src="https://iotools.cloud/wp-content/themes/iotools/assets/images/browsers/firefox.svg" width="18" height="18" alt="Extensão Firefox" 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="Adicionar à Ópera" style="cursor: pointer;"> Ao <img src="https://iotools.cloud/wp-content/themes/iotools/assets/images/browsers/opera.svg" width="18" height="18" alt="Extensão Opera" 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" data-no-translation="">恵</i><a href="https://scoreboard.iotools.cloud/" target="_blank" rel="noopener"> O placar chegou!</a> </h2> <p class="mb-2"> <a href="https://scoreboard.iotools.cloud/" target="_blank" rel="noopener">Placar</a> é uma forma divertida de acompanhar seus jogos, todos os dados são armazenados em seu navegador. Mais recursos serão lançados em breve! </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%;">ANUNCIADO <a tabindex="-1" target="_blank" href="https://iotools.cloud/pt/pricing/" title="Livre-se dos anúncios" style="text-decoration: underline;color: #9f9f9f;">Remover?</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" data-no-translation=""></i> Ferramentas essenciais</h2> <a class="text-muted small blue" href="https://iotools.cloud/pt/tags/must-try/"><u>Ver tudo</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/pt/tool/imagekit/background-remover/" class="card-image card-image--icon" aria-label="Removedor de fundo"> <i class="ti blue" style="--icon-hex:'\f360'" data-no-translation=""></i> </a> <span class="card-image card-image--icon" data-toggle="tooltip" title="Conjunto de ferramentas: ImageKit" ><i class="ti blue" style="--icon-hex:'\f360'" data-no-translation=""></i></span> <a class="card-body flex-row align-items-center h6 mb-0 black" href="https://iotools.cloud/pt/tool/imagekit/background-remover/"> Removedor de fundo </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/pt/tool/ai-image-editor/" class="card-image card-image--icon" aria-label="Editor de imagens de IA"> <i class="ti blue" style="--icon-hex:'\fa32'" data-no-translation=""></i> </a> <a class="card-body flex-row align-items-center h6 mb-0 black" href="https://iotools.cloud/pt/tool/ai-image-editor/"> Editor de imagens de IA<span class="io-badge io-badge--toolset" style="background-color: #92ff9580;color:#10a581" data-toggle="tooltip" title="Kit" 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/pt/tool/ai-image-generator/" class="card-image card-image--icon" aria-label="Gerador de imagens de IA"> <i class="ti blue" style="--icon-hex:'\ffb0'" data-no-translation=""></i> </a> <a class="card-body flex-row align-items-center h6 mb-0 black" href="https://iotools.cloud/pt/tool/ai-image-generator/"> Gerador de imagens de IA </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/pt/tool/imagekit/" class="card-image card-image--icon" aria-label="Kit de imagens"> <i class="ti blue" style="--icon-hex:'\f360'" data-no-translation=""></i> </a> <a class="card-body flex-row align-items-center h6 mb-0 black" href="https://iotools.cloud/pt/tool/imagekit/"> Kit de imagens<span class="io-badge io-badge--toolset" style="background-color: #92ff9580;color:#10a581" data-toggle="tooltip" title="Kit" 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/pt/tool/pdf-converter/compress-pdf/" class="card-image card-image--icon" aria-label="Compressor de PDF"> <i class="ti blue" style="--icon-hex:'\ed44'" data-no-translation=""></i> </a> <span class="card-image card-image--icon" data-toggle="tooltip" title="Conjunto de ferramentas: Conversor de PDF" ><i class="ti blue" style="--icon-hex:'\f7ac'" data-no-translation=""></i></span> <a class="card-body flex-row align-items-center h6 mb-0 black" href="https://iotools.cloud/pt/tool/pdf-converter/compress-pdf/"> Compressor de PDF </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/pt/tool/image-converter/" class="card-image card-image--icon" aria-label="Conversor de Imagem"> <i class="ti blue" style="--icon-hex:'\fd9f'" data-no-translation=""></i> </a> <a class="card-body flex-row align-items-center h6 mb-0 black" href="https://iotools.cloud/pt/tool/image-converter/"> Conversor de Imagem<span class="io-badge io-badge--toolset" style="background-color: #92ff9580;color:#10a581" data-toggle="tooltip" title="Kit" 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/pt/tool/one-time-link/" class="card-image card-image--icon" aria-label="Link único"> <i class="ti blue" style="--icon-hex:'\f7bd'" data-no-translation=""></i> </a> <a class="card-body flex-row align-items-center h6 mb-0 black" href="https://iotools.cloud/pt/tool/one-time-link/"> Link único </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%;">ANUNCIADO <a tabindex="-1" target="_blank" href="https://iotools.cloud/pt/pricing/" title="Livre-se dos anúncios" style="text-decoration: underline;color: #9f9f9f;">Remover?</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" data-no-translation=""></i> Novas chegadas </h2> <a class="text-muted small blue" href="https://iotools.cloud/pt/tools/"><u>Ver tudo</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/pt/tool/css-email-inliner/" class="card-image card-image--icon" aria-label="Inlinhador de E-mails CSS (Inlinhador de Atributo de Estilo)"> <i class="ti blue" style="--icon-hex:'\eae5'" data-no-translation=""></i> </a> <a class="card-body flex-row align-items-center h6 mb-0 black" href="https://iotools.cloud/pt/tool/css-email-inliner/"> Inlinhador de E-mails CSS (Inlinhador de Atributo de Estilo) </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/pt/tool/dns-record-ttl-expiry-calculator/" class="card-image card-image--icon" aria-label="Calculadora de Expiração do TTL do Registro DNS"> <i class="ti blue" style="--icon-hex:'\f316'" data-no-translation=""></i> </a> <a class="card-body flex-row align-items-center h6 mb-0 black" href="https://iotools.cloud/pt/tool/dns-record-ttl-expiry-calculator/"> Calculadora de Expiração do TTL do Registro DNS </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/pt/tool/geojson-wkt-converter/" class="card-image card-image--icon" aria-label="Conversor de Dados Espaciais GeoJSON ↔ WKT"> <i class="ti blue" style="--icon-hex:'\f38e'" data-no-translation=""></i> </a> <a class="card-body flex-row align-items-center h6 mb-0 black" href="https://iotools.cloud/pt/tool/geojson-wkt-converter/"> Conversor de Dados Espaciais GeoJSON ↔ WKT </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/pt/tool/weighted-grade-average-calculator/" class="card-image card-image--icon" aria-label="Calculadora de Média Ponderada"> <i class="ti blue" style="--icon-hex:'\eb67'" data-no-translation=""></i> </a> <a class="card-body flex-row align-items-center h6 mb-0 black" href="https://iotools.cloud/pt/tool/weighted-grade-average-calculator/"> Calculadora de Média Ponderada </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/pt/tool/jwk-set-generator/" class="card-image card-image--icon" aria-label="Gerador de Conjunto de Chaves JSON Web (JWK)"> <i class="ti blue" style="--icon-hex:'\eac7'" data-no-translation=""></i> </a> <a class="card-body flex-row align-items-center h6 mb-0 black" href="https://iotools.cloud/pt/tool/jwk-set-generator/"> Gerador de Conjunto de Chaves JSON Web (JWK) </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/pt/tool/zig-language-formatter/" class="card-image card-image--icon" aria-label="Formatação da Língua Zig"> <i class="ti blue" style="--icon-hex:'\ea77'" data-no-translation=""></i> </a> <a class="card-body flex-row align-items-center h6 mb-0 black" href="https://iotools.cloud/pt/tool/zig-language-formatter/"> Formatação da Língua Zig </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/pt/tool/sewing-fabric-yardage-calculator/" class="card-image card-image--icon" aria-label="Calculadora de Costura e Medida de Tecido"> <i class="ti blue" style="--icon-hex:'\f507'" data-no-translation=""></i> </a> <a class="card-body flex-row align-items-center h6 mb-0 black" href="https://iotools.cloud/pt/tool/sewing-fabric-yardage-calculator/"> Calculadora de Costura e Medida de Tecido </a> </div> <p class="small text-muted mb-3 text-center"><b>Atualizar:</b> Nosso <a href="https://iotools.cloud/pt/tool/css-email-inliner/" class="text-muted"><u>ferramenta mais recente</u></a> Foi adicionado em 15 de junho de 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%;">ANUNCIADO <a tabindex="-1" target="_blank" href="https://iotools.cloud/pt/pricing/" title="Livre-se dos anúncios" style="text-decoration: underline;color: #9f9f9f;">Remover?</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" data-no-translation=""></i> Notícias <small class="black">com destaques técnicos</small></h2> <div data-load-more-id="side-news" class="exclude--translation" data-no-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}">Mostre-me mais!</button> </p> </div> <h2 class="h5 blue text-right mt-5"><i class="ti ti-heart-handshake" data-no-translation=""></i> Envolver-se</h2> <div class="text-right mb-4"> <p>Ajude-nos a continuar fornecendo ferramentas gratuitas valiosas</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="Compre-me um café" 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%;">ANUNCIADO <a tabindex="-1" target="_blank" href="https://iotools.cloud/pt/pricing/" title="Livre-se dos anúncios" style="text-decoration: underline;color: #9f9f9f;">Remover?</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/pt/" class="exclude--translation" data-no-translation=""><u>iotools.cloud</u></a>. Todos os direitos reservados.</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/pt/" class="text-muted">Lar</a> </li> <li class="nav-item"> <a href="https://iotools.cloud/pt/about/" class="text-muted">Sobre</a> </li> <li class="nav-item"> <a href="https://iotools.cloud/pt/contact/" class="text-muted">Contato</a> </li> <li class="nav-item"> <a href="https://iotools.cloud/pt/pricing/" class="text-muted">Preços</a> </li> <li class="nav-item blue mb-2 mb-xl-0"> • </li> <li class="nav-item"><a href="https://iotools.cloud/pt/community-tools/" rel="nofollow" class="text-muted">Ferramentas da Comunidade</a></li> <li class="nav-item"><a href="https://iotools.cloud/pt/journal/" class="text-muted">Centro de periódicos</a></li> <li class="nav-item blue mb-2 mb-xl-0"> • </li> <li class="nav-item"><a href="https://iotools.cloud/pt/privacy-policy/" class="text-muted">política de Privacidade</a></li> <li class="nav-item"><a href="https://iotools.cloud/pt/terms-of-service/" class="text-muted">Termos de serviço</a></li> <li class="nav-item"><a href="https://iotools.statuspage.io/" target="_blank" rel="noopener" class="text-muted">Status do sistema</a></li> <li class="nav-item"><a href="https://iotools.cloud/pt/sitemap/" class="text-muted">Mapa do site</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" data-no-translation=""></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" data-no-translation=""></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" data-no-translation=""></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" data-no-translation=""></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" data-no-translation=""></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="caça ao produto"><i class="ti ti-brand-producthunt" data-no-translation=""></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="pt_PT"></template><script type="speculationrules"> {"prerender":[{"source":"document","where":{"and":[{"href_matches":"/pt/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/wp-content/uploads/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/iotools/*","/pt/*\\?(.+)"]}},{"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/pt/","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":"Link profundo copiado para a \u00e1rea de transfer\u00eancia!","copiedText":"Copiado para a \u00e1rea de transfer\u00eancia!","copiedImage":"Imagem copiada para a \u00e1rea de transfer\u00eancia!","generatedContentAppearsHere":"O resultado aparecer\u00e1 aqui...","confirmOverwriteContent":"O conte\u00fado atual ser\u00e1 substitu\u00eddo?","invalidBase64String":"Sequ\u00eancia de caracteres base64 inv\u00e1lida","timeoutReached":"Tempo limite atingido antes de encontrar o hash.","allCombinationsTried":"Todas as combina\u00e7\u00f5es foram tentadas, mas o hash n\u00e3o foi encontrado. Ajuste as configura\u00e7\u00f5es e tente novamente.","useThisFont":"Use esta fonte","noFileTypesDetected":"Nenhum tipo de arquivo detectado. O conte\u00fado original pode ser apenas um arquivo de texto ou string.","noResults":"Nenhum resultado encontrado","loadMore":"Carregue mais","decodedString":"Sequ\u00eancia decodificada","yes":"Sim","no":"N\u00e3o","team":"Equipe","detectedFile":"Arquivo detectado","download":"Download","converting":"Convertendo...","compressing":"Comprimindo...","tapToRemove":"Toque para remover","serverUploaded":"Enviado para o servidor","validationPassed":"Valida\u00e7\u00e3o aprovada","validationFailed":"Falha na valida\u00e7\u00e3o","validationIndependently":"O c\u00f3digo gerado \u00e9 validado de forma independente","pokemon":{"generation":"Gera\u00e7\u00e3o","hp":"HP","speed":"Velocidade","attack":"Ataque","defense":"Defesa","spAttack":"Ataque Especial","spDefense":"Defesa Especial"},"browserInfo":{"userAgent":"Agente do usu\u00e1rio","language":"Linguagem","windowSize":"Tamanho da janela","pdfViewerEnabled":"Visualizador de PDF habilitado","javascriptEnabled":"Javascript habilitado","cookiesEnabled":"Cookies habilitados","browser":"Navegador","browserMajorVersion":"Vers\u00e3o principal do navegador","browserVersion":"Vers\u00e3o do navegador","layoutEngine":"Mecanismo de layout","deviceMemory":"Mem\u00f3ria do dispositivo","maxTouchPoints":"Pontos de contato m\u00e1ximos","screenSize":"Tamanho da tela","orientation":"Orienta\u00e7\u00e3o","colorDepth":"Profundidade de cor","pixelRatio":"Propor\u00e7\u00e3o de pixels","os":"SO","osVersion":"Vers\u00e3o do SO","deviceType":"Tipo de dispositivo","deviceVendor":"Fornecedor do dispositivo","deviceModel":"Modelo do dispositivo"},"splits":"Divis\u00f5es","noImagesSelected":"Por favor, carregue pelo menos um arquivo.","errorOccurredAI":"Falha ao obter conte\u00fado de IA. Tente novamente.","errorOccurredExtractText":"Falha ao extrair o conte\u00fado do arquivo. Tente novamente.","errorOccurredPokemon":"Nenhum Pok\u00e9mon encontrado com os crit\u00e9rios fornecidos.","errorCannotConvert":"N\u00e3o \u00e9 poss\u00edvel converter","autoComplete":{"Tools":"Ferramentas","Modules":"M\u00f3dulos","SearchForATool":"Pesquise por uma ferramenta, categoria ou tag...","NoToolsFoundForThisQuery":"Nenhuma ferramenta encontrada para esta consulta.","SubmitARequest":"Enviar uma solicita\u00e7\u00e3o","WeWillMakeIt":"e n\u00f3s vamos conseguir!","CategoriesFilter":"Categorias Filtro","NoCategoriesFoundForThisQuery":"Nenhuma categoria encontrada para esta consulta.","TagsFilter":"Filtro de tags","NoTagsFoundForThisQuery":"Nenhuma tag encontrada para esta consulta.","ToNavigate":"navegar","ToSelect":"selecionar","ToClose":"fechar","ToCancel":"Cancelar"}},"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=a1389f69c44704bc20e58ad961beebbc" id="theme-js-js"></script> <script type="text/javascript" src="https://iotools.cloud/wp-content/themes/iotools/dist/modules/ecd9f1b4f0f25d49b3dd988bd5612eca.min.js?ver=7db719a04edace60a1f31a6bbee55646" 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=a1389f69c44704bc20e58ad961beebbc" 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">Autenticação necessária</h5> <button type="button" class="close" data-dismiss="modal" aria-label="Fechar"> <i class="ti ti-x" aria-hidden="true" data-no-translation=""></i> </button> </div> <div class="modal-body"> Por favor <a class="white bg-blue rounded p-1 pl-1 pr-2" rel="nofollow" href="https://iotools.cloud/pt/account/"><i class="ti ti-user-circle" data-no-translation=""></i> entrar</a> ou <a rel="nofollow" href="https://iotools.cloud/pt/register/"><u>registro</u></a> para gerenciar seus favoritos. É grátis! </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">Autenticação necessária</h5> <button type="button" class="close" data-dismiss="modal" aria-label="Fechar"> <i class="ti ti-x" aria-hidden="true" data-no-translation=""></i> </button> </div> <div class="modal-body"> Por favor <a class="white bg-blue rounded p-1 pl-1 pr-2" rel="nofollow" href="https://iotools.cloud/pt/account/?redirect_to=https://iotools.cloud/pt/account/request-tool/"><i class="ti ti-user-circle" data-no-translation=""></i> entrar</a> ou <a rel="nofollow" href="https://iotools.cloud/pt/register/?redirect_to=https://iotools.cloud/pt/account/request-tool/"><u>registro</u></a> para enviar uma solicitação de ferramenta. É grátis! </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">Autenticação necessária</h5> <button type="button" class="close" data-dismiss="modal" aria-label="Fechar"> <i class="ti ti-x" aria-hidden="true" data-no-translation=""></i> </button> </div> <div class="modal-body"> Por favor <a class="white bg-blue rounded p-1 pl-1 pr-2" rel="nofollow" href="https://iotools.cloud/pt/account/?redirect_to=https://iotools.cloud/pt/account/byo/"><i class="ti ti-user-circle" data-no-translation=""></i> entrar</a> ou <a rel="nofollow" href="https://iotools.cloud/pt/register/?redirect_to=https://iotools.cloud/pt/account/byo/"><u>registro</u></a> para construir sua própria ferramenta. É grátis! <div class="card mt-4 mb-0"> <div class="card-body"> <h5><i class="ti ti-info-circle" data-no-translation=""></i> Sobre o Build Your Own (BYO) Builder</h5> <p>Nosso recurso BYO Builder permite que você crie ferramentas personalizadas sem nenhum conhecimento de codificação. Você pode:</p> <ul> <li>Crie ferramentas com tecnologia de IA usando nossa interface simples</li> <li>Compartilhe suas ferramentas com a comunidade</li> <li>Obtenha feedback e melhore suas ferramentas</li> <li>Ajude outras pessoas a resolver problemas com suas criações</li> </ul> <p class="mb-0">Junte-se a nós <a href="https://iotools.cloud/pt/community-tools/"><u>comunidade</u></a> hoje mesmo e comece a criar ferramentas que fazem a diferença!</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 24584 objects (6 MB) from Redis using Predis (v2.4.0). -->