FreeToGenerate.com

426 registered schemes. Your browser treats exactly six of them differently.

Check a scheme against your own browser

Five inputs are handed to your browser's URL parser, and the answers are compared with an ordinary registered scheme. Anything marked as differing is a special-scheme rule at work.

Parsing
Special in the URL Standard
Default port
443
IANA status
Permanent

Waiting for your browser to run the checks.

The comparison is against git, which is registered and is not special — an honest stand-in for an ordinary scheme rather than an invented one.

What the two sources say

registered schemes
426
special in the URL Standard
6
permanent, parsed as ordinary
93
historical
18

All six special schemes are registered as Permanent — and so are 93 others that the parser treats as ordinary. Nothing in the registry predicts which schemes are special, because being special is not a registry concept: it is a hard-coded table in a different specification.

One thing that is not a special-scheme rule, despite being widely listed as one: removing dot segments. A path of /a/./b/../c collapses to /a/c under any scheme with a host, special or not.

The registry

Showing 426 / 426

SchemeStatusParsingDescription
aaaPermanentOrdinaryDiameter Protocol
aaasPermanentOrdinaryDiameter Protocol with Secure Transport
aboutPermanentOrdinaryabout
acapPermanentOrdinaryapplication configuration access protocol
acctPermanentOrdinaryacct
acdProvisionalOrdinaryacd
acrProvisionalOrdinaryacr
adiumxtraProvisionalOrdinaryadiumxtra
adtProvisionalOrdinaryadt
aetProvisionalOrdinaryaet
afpProvisionalOrdinaryafp
afsProvisionalOrdinaryAndrew File System global file names
agtpProvisionalOrdinaryagtp
aimProvisionalOrdinaryaim
amssProvisionalOrdinaryamss
androidProvisionalOrdinaryandroid
appdataProvisionalOrdinaryappdata
aptProvisionalOrdinaryapt
arProvisionalOrdinaryar
ariProvisionalOrdinaryari
arkProvisionalOrdinaryark
atProvisionalOrdinaryat (see [reviewer notes])
attachmentProvisionalOrdinaryattachment
awProvisionalOrdinaryaw
barionProvisionalOrdinarybarion
bbHistoricalOrdinarybb
beshareProvisionalOrdinarybeshare
bitcoinProvisionalOrdinarybitcoin
bitcoincashProvisionalOrdinarybitcoincash
blProvisionalOrdinarybluetooth (shortened)
blobProvisionalOrdinaryblob
bluetoothProvisionalOrdinarybluetooth
boloProvisionalOrdinarybolo
bridProvisionalOrdinarybrid
browserextProvisionalOrdinarybrowserext
cabalProvisionalOrdinarycabal
caipProvisionalOrdinarycaip
calculatorProvisionalOrdinarycalculator
calltoProvisionalOrdinarycallto
capPermanentOrdinaryCalendar Access Protocol
castProvisionalOrdinarycast
castsProvisionalOrdinarycasts
chromeProvisionalOrdinarychrome
chrome-extensionProvisionalOrdinarychrome-extension
cidPermanentOrdinarycontent identifier
coapPermanentOrdinarycoap
coap+tcpPermanentOrdinarycoap+tcp (see [reviewer notes])
coap+wsPermanentOrdinarycoap+ws (see [reviewer notes])
coapsPermanentOrdinarycoaps
coaps+tcpPermanentOrdinarycoaps+tcp (see [reviewer notes])
coaps+wsPermanentOrdinarycoaps+ws (see [reviewer notes])
com-eventbrite-attendeeProvisionalOrdinarycom-eventbrite-attendee
contentProvisionalOrdinarycontent
content-typeProvisionalOrdinarycontent-type
cridPermanentOrdinaryTV-Anytime Content Reference Identifier
cstrProvisionalOrdinarycstr
cttpsProvisionalOrdinarycttps
cvsProvisionalOrdinarycvs
dabProvisionalOrdinarydab
datProvisionalOrdinarydat
dataPermanentOrdinarydata
davPermanentOrdinarydav
dhttpProvisionalOrdinarydhttp (see [reviewer notes])
diasporaProvisionalOrdinarydiaspora
dictPermanentOrdinarydictionary service protocol
didProvisionalOrdinarydid
dilithium3ProvisionalOrdinarydilithium3
disProvisionalOrdinarydis
dlna-playcontainerProvisionalOrdinarydlna-playcontainer
dlna-playsingleProvisionalOrdinarydlna-playsingle
dnpProvisionalOrdinarydnp
dnsPermanentOrdinaryDomain Name System
dntpProvisionalOrdinarydntp
doiPermanentOrdinarydoi
donauProvisionalOrdinarydonau
dppProvisionalOrdinarydpp
drmProvisionalOrdinarydrm
dropHistoricalOrdinarydrop
dtmiProvisionalOrdinarydtmi
dtnPermanentOrdinaryDTNRG research and development
dvbProvisionalOrdinarydvb
dvxProvisionalOrdinarydvx
dwebProvisionalOrdinarydweb
ed2kProvisionalOrdinaryed2k
eidProvisionalOrdinaryeid
elsiProvisionalOrdinaryelsi
embeddedProvisionalOrdinaryembedded
ensProvisionalOrdinaryens
esimProvisionalOrdinaryesim
ethereumProvisionalOrdinaryethereum
examplePermanentOrdinaryexample
ezProvisionalOrdinaryez
facetimeProvisionalOrdinaryfacetime
faxHistoricalOrdinaryfax
feedProvisionalOrdinaryfeed
feedreadyProvisionalOrdinaryfeedready
fidoProvisionalOrdinaryfido
filePermanentSpecialHost-specific file names
filesystemHistoricalOrdinaryfilesystem
fingerProvisionalOrdinaryfinger
first-run-pen-experienceProvisionalOrdinaryfirst-run-pen-experience
fishProvisionalOrdinaryfish
fmProvisionalOrdinaryfm
ftpPermanentSpecial · 21File Transfer Protocol
fuchsia-pkgProvisionalOrdinaryfuchsia-pkg
gcxProvisionalOrdinarygcx
geoPermanentOrdinaryGeographic Locations
ggProvisionalOrdinarygg
gitProvisionalOrdinarygit
gitoidProvisionalOrdinarygitoid
gizmoprojectProvisionalOrdinarygizmoproject
goPermanentOrdinarygo
gopherPermanentOrdinaryThe Gopher Protocol
graphProvisionalOrdinarygraph
grdHistoricalOrdinarygrd
gtalkProvisionalOrdinarygtalk
h323PermanentOrdinaryH.323
hamProvisionalOrdinaryham
hcapProvisionalOrdinaryhcap
hcpProvisionalOrdinaryhcp
hs20ProvisionalOrdinaryhs20
httpPermanentSpecial · 80Hypertext Transfer Protocol
httpsPermanentSpecial · 443Hypertext Transfer Protocol Secure
hxxpProvisionalOrdinaryhxxp
hxxpsProvisionalOrdinaryhxxps
hydrazoneProvisionalOrdinaryhydrazone
hyperProvisionalOrdinaryhyper
i0ProvisionalOrdinaryi0
iaxPermanentOrdinaryInter-Asterisk eXchange Version 2
ibiProvisionalOrdinaryibi
ibi-ProvisionalOrdinaryibi-
icapPermanentOrdinaryInternet Content Adaptation Protocol
iconProvisionalOrdinaryicon
ilstringProvisionalOrdinaryilstring
imPermanentOrdinaryInstant Messaging
imapPermanentOrdinaryinternet message access protocol
infoPermanentOrdinaryInformation Assets with Identifiers in Public Namespaces. [RFC4452] (section 3) defines an "info" registry of public namespaces, which is maintained by NISO and can be accessed from [http://info-uri.info/].
iotdiscoProvisionalOrdinaryiotdisco
ipfsProvisionalOrdinaryipfs
ipnPermanentOrdinaryipn
ipnsProvisionalOrdinaryipns
ippPermanentOrdinaryInternet Printing Protocol
ippsPermanentOrdinaryInternet Printing Protocol over HTTPS
ircProvisionalOrdinaryirc
irc6ProvisionalOrdinaryirc6
ircsProvisionalOrdinaryircs
irisPermanentOrdinaryInternet Registry Information Service
iris.beepPermanentOrdinaryiris.beep
iris.lwzPermanentOrdinaryiris.lwz
iris.xpcPermanentOrdinaryiris.xpc
iris.xpcsPermanentOrdinaryiris.xpcs
isostoreProvisionalOrdinaryisostore
itmsProvisionalOrdinaryitms
jabberPermanentOrdinaryjabber
jarProvisionalOrdinaryjar
jmsProvisionalOrdinaryJava Message Service
keyparcProvisionalOrdinarykeyparc
lastfmProvisionalOrdinarylastfm
lbryProvisionalOrdinarylbry
ldapPermanentOrdinaryLightweight Directory Access Protocol
ldapsProvisionalOrdinaryldaps
leaptofrogansPermanentOrdinaryleaptofrogans
lidProvisionalOrdinarylid
linkidProvisionalOrdinarylinkid
lorawanProvisionalOrdinarylorawan
lpaProvisionalOrdinarylpa
lvltProvisionalOrdinarylvlt
machineProvisioningProgressReporterProvisionalOrdinaryWindows Autopilot Modern Device Management status updates
magnetProvisionalOrdinarymagnet
mailserverHistoricalOrdinaryAccess to data available from mail servers
mailtoPermanentOrdinaryElectronic mail address
mapsProvisionalOrdinarymaps
marketProvisionalOrdinarymarket
matrixProvisionalOrdinarymatrix
mdocProvisionalOrdinarymdoc
mdoc-openid4vpProvisionalOrdinarymdoc-openid4vp
messageProvisionalOrdinarymessage
microsoft.windows.cameraProvisionalOrdinarymicrosoft.windows.camera
microsoft.windows.camera.multipickerProvisionalOrdinarymicrosoft.windows.camera.multipicker
microsoft.windows.camera.pickerProvisionalOrdinarymicrosoft.windows.camera.picker
midPermanentOrdinarymessage identifier
mmsProvisionalOrdinarymms
modemHistoricalOrdinarymodem
mongodbProvisionalOrdinarymongodb
mozProvisionalOrdinarymoz
mqttProvisionalOrdinarymqtt
mqttsProvisionalOrdinarymqtts
ms-accessProvisionalOrdinaryms-access
ms-appinstallerProvisionalOrdinaryms-appinstaller
ms-browser-extensionProvisionalOrdinaryms-browser-extension
ms-calculatorProvisionalOrdinaryms-calculator
ms-drive-toProvisionalOrdinaryms-drive-to
ms-enrollmentProvisionalOrdinaryms-enrollment
ms-excelProvisionalOrdinaryms-excel
ms-eyecontrolspeechProvisionalOrdinaryms-eyecontrolspeech
ms-gamebarservicesProvisionalOrdinaryms-gamebarservices
ms-gamingoverlayProvisionalOrdinaryms-gamingoverlay
ms-getofficeProvisionalOrdinaryms-getoffice
ms-helpProvisionalOrdinaryms-help
ms-infopathProvisionalOrdinaryms-infopath
ms-inputappProvisionalOrdinaryms-inputapp
ms-launchremotedesktopProvisionalOrdinaryms-launchremotedesktop
ms-lockscreencomponent-configProvisionalOrdinaryms-lockscreencomponent-config
ms-media-stream-idProvisionalOrdinaryms-media-stream-id
ms-meetnowProvisionalOrdinaryms-meetnow
ms-mixedrealitycaptureProvisionalOrdinaryms-mixedrealitycapture
ms-mobileplansProvisionalOrdinaryms-mobileplans
ms-newsandinterestsProvisionalOrdinaryms-newsandinterests
ms-officeappProvisionalOrdinaryms-officeapp
ms-peopleProvisionalOrdinaryms-people
ms-personacardProvisionalOrdinaryms-personacard
ms-powerpointProvisionalOrdinaryms-powerpoint
ms-projectProvisionalOrdinaryms-project
ms-publisherProvisionalOrdinaryms-publisher
ms-recallProvisionalOrdinaryms-recall
ms-remotedesktopProvisionalOrdinaryms-remotedesktop
ms-remotedesktop-launchProvisionalOrdinaryms-remotedesktop-launch
ms-restoretabcompanionProvisionalOrdinaryms-restoretabcompanion
ms-screenclipProvisionalOrdinaryms-screenclip
ms-screensketchProvisionalOrdinaryms-screensketch
ms-searchProvisionalOrdinaryms-search
ms-search-repairProvisionalOrdinaryms-search-repair
ms-secondary-screen-controllerProvisionalOrdinaryms-secondary-screen-controller
ms-secondary-screen-setupProvisionalOrdinaryms-secondary-screen-setup
ms-settingsProvisionalOrdinaryms-settings
ms-settings-airplanemodeProvisionalOrdinaryms-settings-airplanemode
ms-settings-bluetoothProvisionalOrdinaryms-settings-bluetooth
ms-settings-cameraProvisionalOrdinaryms-settings-camera
ms-settings-cellularProvisionalOrdinaryms-settings-cellular
ms-settings-cloudstorageProvisionalOrdinaryms-settings-cloudstorage
ms-settings-connectabledevicesProvisionalOrdinaryms-settings-connectabledevices
ms-settings-displays-topologyProvisionalOrdinaryms-settings-displays-topology
ms-settings-emailandaccountsProvisionalOrdinaryms-settings-emailandaccounts
ms-settings-languageProvisionalOrdinaryms-settings-language
ms-settings-locationProvisionalOrdinaryms-settings-location
ms-settings-lockProvisionalOrdinaryms-settings-lock
ms-settings-nfctransactionsProvisionalOrdinaryms-settings-nfctransactions
ms-settings-notificationsProvisionalOrdinaryms-settings-notifications
ms-settings-powerProvisionalOrdinaryms-settings-power
ms-settings-privacyProvisionalOrdinaryms-settings-privacy
ms-settings-proximityProvisionalOrdinaryms-settings-proximity
ms-settings-screenrotationProvisionalOrdinaryms-settings-screenrotation
ms-settings-wifiProvisionalOrdinaryms-settings-wifi
ms-settings-workplaceProvisionalOrdinaryms-settings-workplace
ms-spdProvisionalOrdinaryms-spd
ms-stickersProvisionalOrdinaryms-stickers
ms-sttoverlayProvisionalOrdinaryms-sttoverlay
ms-transit-toProvisionalOrdinaryms-transit-to
ms-useractivitysetProvisionalOrdinaryms-useractivityset
ms-uupProvisionalOrdinaryms-uup
ms-virtualtouchpadProvisionalOrdinaryms-virtualtouchpad
ms-visioProvisionalOrdinaryms-visio
ms-walk-toProvisionalOrdinaryms-walk-to
ms-whiteboardProvisionalOrdinaryms-whiteboard
ms-whiteboard-cmdProvisionalOrdinaryms-whiteboard-cmd
ms-widgetboardProvisionalOrdinaryms-widgetboard
ms-widgetsProvisionalOrdinaryms-widgets
ms-wordProvisionalOrdinaryms-word
msnimProvisionalOrdinarymsnim
msrpPermanentOrdinaryMessage Session Relay Protocol
msrpsPermanentOrdinaryMessage Session Relay Protocol Secure
mssProvisionalOrdinarymss
mtPermanentOrdinaryMatter protocol on-boarding payloads that are encoded for use in QR Codes and/or NFC Tags
mtqpPermanentOrdinaryMessage Tracking Query Protocol
mtrustProvisionalOrdinarymtrust
mumbleProvisionalOrdinarymumble
mupdatePermanentOrdinaryMailbox Update (MUPDATE) Protocol
musikProvisionalOrdinarymusik
mvnProvisionalOrdinarymvn
mvrpProvisionalOrdinarymvrp (see [reviewer notes])
mvrpsProvisionalOrdinarymvrps (see [reviewer notes])
newsPermanentOrdinaryUSENET news
nfsPermanentOrdinarynetwork file system protocol
niPermanentOrdinaryni
nihPermanentOrdinarynih
nntpPermanentOrdinaryUSENET news using NNTP access
nostrProvisionalOrdinarynostr
notesProvisionalOrdinarynotes
npampProvisionalOrdinarynpamp
numProvisionalOrdinaryNamespace Utility Modules
ocfProvisionalOrdinaryocf
oidProvisionalOrdinaryoid
onenoteProvisionalOrdinaryonenote
onenote-cmdProvisionalOrdinaryonenote-cmd
opaquelocktokenPermanentOrdinaryopaquelocktokent
openidProvisionalOrdinaryOpenID Connect
openpgp4fprProvisionalOrdinaryopenpgp4fpr
otpauthProvisionalOrdinaryotpauth
p1HistoricalOrdinaryp1
packHistoricalOrdinarypack
palmProvisionalOrdinarypalm
paparazziProvisionalOrdinarypaparazzi
paymentHistoricalOrdinarypayment
paytoProvisionalOrdinarypayto
pkcs11PermanentOrdinaryPKCS#11
pkgProvisionalOrdinarypkg
platformProvisionalOrdinaryplatform
popPermanentOrdinaryPost Office Protocol v3
presPermanentOrdinaryPresence
prosperoHistoricalOrdinaryProspero Directory Service
proxyProvisionalOrdinaryproxy
psycProvisionalOrdinarypsyc
pttpProvisionalOrdinarypttp
pwidProvisionalOrdinarypwid
qbProvisionalOrdinaryqb
queryProvisionalOrdinaryquery
quic-transportProvisionalOrdinaryquic-transport
redisProvisionalOrdinaryredis
redissProvisionalOrdinaryrediss
reloadPermanentOrdinaryreload
resProvisionalOrdinaryres
resourceProvisionalOrdinaryresource
rmiProvisionalOrdinaryrmi
rsyncProvisionalOrdinaryrsync
rtmfpProvisionalOrdinaryrtmfp
rtmpProvisionalOrdinaryrtmp
rtspPermanentOrdinaryReal-Time Streaming Protocol (RTSP)
rtspsPermanentOrdinaryReal-Time Streaming Protocol (RTSP) over TLS
rtspuPermanentOrdinaryReal-Time Streaming Protocol (RTSP) over unreliable datagram transport
sarifProvisionalOrdinarysarif
secondlifeProvisionalOrdinaryquery
secret-tokenProvisionalOrdinarysecret-token
servicePermanentOrdinaryservice location
sessionPermanentOrdinarysession
sftpProvisionalOrdinaryquery
sgnProvisionalOrdinarysgn
shcProvisionalOrdinaryshc
shelterProvisionalOrdinaryshelter
shttp (OBSOLETE)PermanentOrdinarySecure Hypertext Transfer Protocol
sievePermanentOrdinaryManageSieve Protocol
simpleledgerProvisionalOrdinarysimpleledger
simplexProvisionalOrdinarysimplex
sipPermanentOrdinarysession initiation protocol
sipsPermanentOrdinarysecure session initiation protocol
skypeProvisionalOrdinaryskype
smbProvisionalOrdinarysmb
smpProvisionalOrdinarysmp
smsPermanentOrdinaryShort Message Service
smtpProvisionalOrdinarysmtp
snewsHistoricalOrdinaryNNTP over SSL/TLS
snmpPermanentOrdinarySimple Network Management Protocol
soap.beepPermanentOrdinarysoap.beep
soap.beepsPermanentOrdinarysoap.beeps
soldatProvisionalOrdinarysoldat
spacifyProvisionalOrdinaryspacify
spiffeProvisionalOrdinaryspiffe
spotifyProvisionalOrdinaryspotify
ssbProvisionalOrdinaryssb
sshProvisionalOrdinaryssh
sssProvisionalOrdinarysss
starknetProvisionalOrdinarystarknet
steamProvisionalOrdinarysteam
stunPermanentOrdinarystun
stunsPermanentOrdinarystuns
submitProvisionalOrdinarysubmit
svnProvisionalOrdinarysvn
swhProvisionalOrdinaryswh
swidProvisionalOrdinaryswid (see [reviewer notes])
swidpathProvisionalOrdinaryswidpath (see [reviewer notes])
tagPermanentOrdinarytag
talerProvisionalOrdinarytaler
teamspeakProvisionalOrdinaryteamspeak
teapotProvisionalOrdinaryteapot
teapotsProvisionalOrdinaryteapots
telPermanentOrdinarytelephone
teliaeidProvisionalOrdinaryteliaeid
telnetPermanentOrdinaryReference to interactive sessions
tftpPermanentOrdinaryTrivial File Transfer Protocol
thingsProvisionalOrdinarythings
thismessagePermanentOrdinarymultipart/related relative reference resolution
thzpHistoricalOrdinarythzp
tipPermanentOrdinaryTransaction Internet Protocol
tn3270PermanentOrdinaryInteractive 3270 emulation sessions
toolProvisionalOrdinarytool
tttpsProvisionalOrdinaryTLS TimeToken Secure Protocol (TTTPS). A cryptographic temporal ordering proof protocol augmenting TLS 1.3 with Proof-of-Time records.
turnPermanentOrdinaryturn
turnsPermanentOrdinaryturns
tvPermanentOrdinaryTV Broadcasts
udpProvisionalOrdinaryudp
unrealProvisionalOrdinaryunreal
upnProvisionalOrdinaryupn
uptHistoricalOrdinaryupt
urnPermanentOrdinaryUniform Resource Names
ustProvisionalOrdinaryust
ut2004ProvisionalOrdinaryut2004
uuaidProvisionalOrdinaryuuaid
uuid-in-packageProvisionalOrdinaryuuid-in-package
v-eventProvisionalOrdinaryv-event
vemmiPermanentOrdinaryversatile multimedia interface
ventriloProvisionalOrdinaryventrilo
vesProvisionalOrdinaryves
videotexHistoricalOrdinaryvideotex
view-sourceProvisionalOrdinaryview-source
vncPermanentOrdinaryRemote Framebuffer Protocol
vscodeProvisionalOrdinaryvscode
vscode-insidersProvisionalOrdinaryvscode-insiders
vslsProvisionalOrdinaryvsls
w3ProvisionalOrdinaryw3 (see [reviewer notes])
waisHistoricalOrdinaryWide Area Information Servers
wasmProvisionalOrdinarywasm
wasm-jsProvisionalOrdinarywasm-js
wcrProvisionalOrdinarywcr
web+apProvisionalOrdinaryweb+ap
web3ProvisionalOrdinaryweb3
webcalProvisionalOrdinarywebcal
wifiProvisionalOrdinarywifi
wpidHistoricalOrdinarywpid
wsPermanentSpecial · 80WebSocket connections
wssPermanentSpecial · 443Encrypted WebSocket connections
wtaiProvisionalOrdinarywtai
wyciwygProvisionalOrdinarywyciwyg
xcomputeProvisionalOrdinaryxcompute
xconPermanentOrdinaryxcon
xcon-useridPermanentOrdinaryxcon-userid
xfireProvisionalOrdinaryxfire
xftpProvisionalOrdinaryxftp
xmlrpc.beepPermanentOrdinaryxmlrpc.beep
xmlrpc.beepsPermanentOrdinaryxmlrpc.beeps
xmppPermanentOrdinaryExtensible Messaging and Presence Protocol
xrcpProvisionalOrdinaryxrcp
xriProvisionalOrdinaryxri
ymsgrProvisionalOrdinaryymsgr
z39.50HistoricalOrdinaryZ39.50 information access
z39.50rPermanentOrdinaryZ39.50 Retrieval
z39.50sPermanentOrdinaryZ39.50 Session
ztdnaidProvisionalOrdinaryztdnaid

Schemes and statuses from the IANA URI Schemes registry; the special-scheme table and its default ports from the WHATWG URL Standard. The parser is your own browser's, which is why the checks above run in this tab and not on a server. 2026-08-03

Also available in: Español · Português · Français · العربية

URI schemes: the full list, and which six are special

Every scheme IANA has registered, what its status means, and the separate six-row table that actually decides how a URL is parsed.

What is a URI scheme?

A URI scheme is the part before the colon: the https in https://example.com, the mailto in mailto:someone@example.com, the spotify in a link that opens an app. It tells whatever receives the URL what kind of thing it is looking at, and IANA keeps the register of them — 426 at the time this page was generated, each marked Permanent, Provisional or Historical.

Almost every list of URL schemes on the web is a copy of that register with the status column quietly dropped. This one keeps it, and adds the column no copy has, because the register turns out not to answer the question most people arrive with.

That question is how a browser will actually treat the scheme. The answer lives in a different specification entirely, and it takes the form of a table with six rows.

How to use it

  1. Type a scheme into the box. Anything at all, registered or invented. Five inputs are handed to your browser's own URL parser and the answers appear underneath.
  2. Read which lines say they differ. Each check is compared against an ordinary registered scheme, so a line marked as differing is a special-scheme rule being applied and nothing else.
  3. Search the register below. By scheme name or by description. Each row carries its IANA status, whether the URL Standard treats it specially, and its default port if it has one.

Six special schemes, and the register cannot tell you which

The WHATWG URL Standard — the specification browsers actually implement — defines a special scheme as one listed in a table it prints in full. The table has six rows: ftp with default port 21, file with no port at all, http with 80, https with 443, ws with 80 and wss with 443. A URL is special if its scheme is one of those six, and every difference on this page follows from that single predicate.

Line the two sources up and they do not correspond. All six special schemes are registered Permanent, which sounds like a rule until you notice that 93 other schemes are also Permanent and are parsed as ordinary ones. gopher is Permanent, with its own RFC, and your browser gives it no special treatment whatsoever. mailto is Permanent and ordinary. Meanwhile a scheme you invent this afternoon, which is in no register at all, is parsed exactly like gopher.

So registration status tells you whether a scheme has been through a standards process. It tells you nothing about parsing. The two facts are maintained by different bodies for different purposes, and conflating them is the most common mistake in this corner of the web.

What being special actually changes

The default port is dropped. Parse https://example.com:443/ and the port disappears, because 443 is the default for https; parse git://example.com:443/ and the port stays, because git has no default to compare against.

Backslashes become forward slashes. The string https:\\example.com\path parses as https://example.com/path — the parser silently repairs it. Under an ordinary scheme every backslash survives untouched.

An empty host is refused, and what happens instead is the surprising part. A special scheme may not have an empty host, so https:///path does not fail: the first path segment is promoted into the host, and you get a URL whose host is path. Under an ordinary scheme the empty host is preserved and the path stays where you put it. file is the exception among the six — it is the one special scheme allowed an empty host, which is why file:///etc/hosts works the way it does.

The host is normalised. EXAMPLE.München.DE becomes example.xn--mnchen-3ya.de: lowercased and run through IDNA. An ordinary scheme keeps the case and percent-encodes the non-ASCII characters instead.

And a special scheme demands a host. new URL("https:") throws a TypeError, while new URL("git:") is a perfectly valid URL that parses to git: and nothing else.

One difference that is not real

Dot-segment removal is regularly listed as special-scheme behaviour, and it is not. A path of /a/./b/../c collapses to /a/c under https, under git, and under a scheme nobody has ever registered. Any URL with an authority gets its dot segments removed, so this is a property of having a host, not of being special.

We include this because the claim was in our own notes before the page was written, and checking it against the parser is what removed it. The checks above are run in your browser rather than quoted from a specification for the same reason: a page about what browsers do should ask one.

Two honest limits. The register is a snapshot, dated in the panel below the table, and schemes are added continuously — a scheme registered last week may not be here, though it will parse identically to the ordinary ones that are. And a scheme being registered says nothing about whether anything on your machine will open it: that is a matter of what software you have installed, which no web page can inspect.

Why is it free?

The register travels with the page as a few kilobytes and the parsing checks run in your own browser. Nothing you type is uploaded, nothing is logged, and there is no account to create.

No sign-up, no limits, and no watermark on anything you copy.