Ferramentas / Validador de URL

Validador de URL

Cole uma URL e veja na hora se ela é válida e como ela se divide em protocolo, host, porta, caminho e parâmetros.

Processamento local: nada do que você digita sai do seu navegador.

Como usar

Cole ou digite a URL. A análise acontece enquanto você digita, usando o mesmo interpretador de URLs (URL) que os navegadores modernos usam. Se a URL é válida, mostramos protocolo, host, porta, usuário, caminho, query, fragmento e origem, além de uma tabela com os parâmetros da query já decodificados.

Erros e avisos comuns

  • Falta o protocolo: exemplo.com.br sozinho não é uma URL absoluta; use https://exemplo.com.br.
  • Espaços devem ser codificados como %20.
  • http não é criptografado; prefira https.
  • Usuário e senha na URL (https://user:senha@site) são inseguros.

Uma URL válida só tem a forma correta: a validação não acessa o endereço e não garante que a página exista.

Como implementar em código

Exemplos prontos para usar no seu projeto.

function analisarUrl(texto) {
  try {
    const u = new URL(texto);          // lança TypeError se for inválida
    return { protocolo: u.protocol, host: u.hostname, porta: u.port,
             caminho: u.pathname, query: Object.fromEntries(u.searchParams) };
  } catch {
    return null;
  }
}

console.log(analisarUrl('https://exemplo.com.br:8443/a/b?x=1&y=2#topo'));
console.log(analisarUrl('exemplo.com.br')); // null (falta o protocolo)
from urllib.parse import urlparse, parse_qs

def analisar_url(texto: str):
    u = urlparse(texto)
    # urlparse é permissivo: exija protocolo e host para considerar válida
    if u.scheme not in ("http", "https") or not u.hostname:
        return None
    return {"protocolo": u.scheme, "host": u.hostname, "porta": u.port,
            "caminho": u.path, "query": parse_qs(u.query)}

print(analisar_url("https://exemplo.com.br:8443/a/b?x=1&y=2#topo"))
print(analisar_url("exemplo.com.br"))  # None
package main

import (
	"fmt"
	"net/url"
)

func main() {
	for _, s := range []string{"https://exemplo.com.br:8443/a/b?x=1&y=2#topo", "exemplo.com.br"} {
		// Parse é permissivo: exija protocolo e host para considerar válida
		u, err := url.Parse(s)
		if err != nil || u.Scheme == "" || u.Host == "" {
			fmt.Println("inválida:", s)
			continue
		}
		fmt.Println(u.Scheme, u.Hostname(), u.Port(), u.Path, u.Query())
	}
}
void main() {
  for (final s in ['https://exemplo.com.br:8443/a/b?x=1&y=2#topo', 'exemplo.com.br']) {
    final u = Uri.tryParse(s);
    // Uri.tryParse aceita quase tudo: exija protocolo e host
    if (u == null || !u.hasScheme || u.host.isEmpty) {
      print('inválida: $s');
      continue;
    }
    print('${u.scheme} ${u.host} ${u.hasPort ? u.port : "-"} ${u.path} ${u.queryParameters}');
  }
}
import java.net.URI;

public class UrlValidator {
    public static void main(String[] args) {
        for (String s : new String[]{"https://exemplo.com.br:8443/a/b?x=1&y=2#topo", "exemplo.com.br"}) {
            try {
                URI u = new URI(s);               // lança URISyntaxException se mal formada
                if (u.getScheme() == null || u.getHost() == null) {
                    System.out.println("inválida: " + s);   // sem protocolo ou host
                    continue;
                }
                System.out.println(u.getScheme() + " " + u.getHost() + " " + u.getPort()
                        + " " + u.getPath() + " " + u.getQuery());
            } catch (Exception e) {
                System.out.println("inválida: " + s + " (" + e.getMessage() + ")");
            }
        }
    }
}

getPort() devolve -1 quando a URL não informa a porta.

<?php
function analisarUrl(string $texto): ?array {
    // FILTER_VALIDATE_URL exige protocolo e host
    if (filter_var($texto, FILTER_VALIDATE_URL) === false) {
        return null;
    }
    $p = parse_url($texto);
    parse_str($p['query'] ?? '', $query);
    return [
        'protocolo' => $p['scheme'],
        'host'      => $p['host'],
        'porta'     => $p['port'] ?? null,
        'caminho'   => $p['path'] ?? '',
        'query'     => $query,
    ];
}

print_r(analisarUrl('https://exemplo.com.br:8443/a/b?x=1&y=2#topo'));
var_dump(analisarUrl('exemplo.com.br')); // NULL
using System;

class Program
{
    static void Main()
    {
        foreach (var s in new[] { "https://exemplo.com.br:8443/a/b?x=1&y=2#topo", "exemplo.com.br" })
        {
            // UriKind.Absolute exige protocolo
            if (Uri.TryCreate(s, UriKind.Absolute, out var u) &&
                (u.Scheme == Uri.UriSchemeHttp || u.Scheme == Uri.UriSchemeHttps))
                Console.WriteLine($"{u.Scheme} {u.Host} {u.Port} {u.AbsolutePath} {u.Query}");
            else
                Console.WriteLine($"inválida: {s}");
        }
    }
}

Uri.Port devolve a porta padrão do protocolo quando ela não está na URL.

Perguntas frequentes

A ferramenta verifica se o site está no ar?

Não. Ela só analisa o texto da URL no seu navegador. Nenhuma requisição é feita ao endereço informado.

Por que localhost:3000 aparece com aviso?

Sem o https:// ou http:// na frente, o interpretador entende que "localhost" é o protocolo. Escreva http://localhost:3000 para a leitura correta.

A porta aparece vazia, é erro?

Não. Quando a URL não informa a porta, vale a padrão do protocolo (80 para http e 443 para https), e mostramos isso na tabela.

Veja também

Precisa de um sistema ou app sob medida?

A VcInova desenvolve software, aplicativos e integrações para empresas de todo o Brasil.

Fale com a VcInova