{"id":15671,"date":"2026-11-06T08:05:00","date_gmt":"2026-11-06T07:05:00","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/blog\/?p=15671"},"modified":"2026-10-26T13:14:30","modified_gmt":"2026-10-26T12:14:30","slug":"https-records-in-dns-how-http-3-discovery-works","status":"publish","type":"post","link":"https:\/\/www.lukaswojcik.com\/blog\/en\/web-development\/tutorials-en-web-development\/https-records-in-dns-how-http-3-discovery-works\/","title":{"rendered":"HTTPS Records in DNS: How HTTP\/3 Discovery Works"},"content":{"rendered":"<p>HTTP\/3 carries HTTP over QUIC, which uses UDP. A client can try QUIC directly without a prior advertisement. Success still depends on the endpoint and network path. Failure may be immediate or become apparent only when a time limit expires.<\/p>\n<p>Two information sources help with selection: <code>Alt-Svc<\/code> names an alternative service in an HTTP response; an HTTPS DNS record can provide connection parameters before the first HTTP request. Both advertise possibilities, without guaranteeing a reachable or faster connection.<\/p>\n<figure class=\"lw-diagram\"><img decoding=\"async\" src=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/diagrams\/httpsdns-reviewed-en-20261025.png\" width=\"1120\" height=\"580\" loading=\"lazy\" alt=\"Two sources of HTTP\/3 information\"><figcaption>Client support, endpoint and network path determine actual use.<\/figcaption><\/figure>\n<h2>Alt-Svc can help during the same page view<\/h2>\n<p><code>Alt-Svc: h3=\":443\"; ma=86400<\/code> advertises an equivalent HTTP\/3 service on UDP port 443 at the same host. <code>ma<\/code> gives the freshness lifetime for new connection attempts in seconds. Use of the alternative is optional; certificate validation for the original host still applies.<\/p>\n<p>Without a previous cache entry or another information source, the header is often first received over HTTP\/1.1 or HTTP\/2. After reading it, a supporting client can establish an additional QUIC connection. This does not require another website visit: further resources on the same page may already benefit. The original TCP connection need not close first.<\/p>\n<h2>What an HTTPS record adds<\/h2>\n<p>The HTTPS DNS type has number 65 and belongs to the SVCB framework. For an ordinary HTTPS URL on port 443, the lookup uses the hostname. A ServiceMode record describes a potential endpoint: the server name, port and supported application protocols such as HTTP\/3. These protocols are identified by ALPN names. AliasMode instead points to another name whose records need further resolution.<\/p>\n<p><code>alpn=\"h3,h2\"<\/code> advertises HTTP\/3 and HTTP\/2. A compatible client can therefore try the first HTTP request over QUIC. Selection, parallel connection attempts, cache state and network conditions determine the actual sequence. A DNS record does not enable HTTP\/3 on the server.<\/p>\n<p><code>ipv4hint<\/code> and <code>ipv6hint<\/code> supply address hints for an early connection attempt. Available A\/AAAA answers take precedence; otherwise the corresponding lookups should still take place. Hints therefore do not generally replace address resolution.<\/p>\n<p>The <code>ech<\/code> parameter can carry an ECH configuration list containing a public key and additional information. With supporting clients and servers, ECH protects the inner TLS server name and other fields. A DNS advertisement does not prove successful ECH use. Plaintext DNS queries or visible destination addresses can still reveal information, and ECH configuration can also be supplied through other mechanisms.<\/p>\n<h2>Historical results from 20 domains<\/h2>\n<p>The saved tool results from <strong>5 September 2026<\/strong> were reanalysed during this revision. The following table describes that historical run, not a current provider measurement or representative market share.<\/p>\n<table><thead><tr><th>Historical observation<\/th><th>Domains<\/th><\/tr><\/thead><tbody><tr><td>Any HTTPS record<\/td><td>3<\/td><\/tr><tr><td>HTTPS record with h3<\/td><td>2<\/td><\/tr><tr><td>Alt-Svc advertising h3<\/td><td>7<\/td><\/tr><tr><td>Both HTTP\/3 advertisements<\/td><td>2<\/td><\/tr><tr><td>Alt-Svc h3 only<\/td><td>5<\/td><\/tr><tr><td>HTTPS h3 only<\/td><td>0<\/td><\/tr><\/tbody><\/table>\n<p>The two domains advertising <code>h3<\/code> in HTTPS records also had a corresponding Alt-Svc header. This was not true of every HTTPS record: the third listed only <code>h2<\/code> and had no Alt-Svc header. Seven versus two gives a factor of 3.5 for observed <em>HTTP\/3 advertisements<\/em>; seven versus all three HTTPS records would be only about 2.3.<\/p>\n<p>Five Alt-Svc advertisements had <code>ma<\/code> values of 86,400 seconds; two used 2,592,000 seconds. No <code>ech<\/code> parameter was recognised in the processed DNS results. This did not measure negotiated ECH connections, and the DNS processing limitations also matter.<\/p>\n<h2>A single error does not establish the cause<\/h2>\n<p>The historical h2-only record belonged to <code>stackoverflow.com<\/code>. Its forced HTTP\/3 test ended after 63 milliseconds with \u201cQUIC connection has been shut down\u201d. That does not establish behaviour at every endpoint or the operator&#8217;s intention. A valid HTTPS record without <code>h3<\/code> is nevertheless not a configuration error in itself.<\/p>\n<p>Two advertised services timed out while other HTTP\/3 connections succeeded in the same run. That establishes basic QUIC capability in the measuring setup, but does not explain every failure. For google.com, connection and TLS times were recorded before the request expired without receiving a response. A timeout therefore does not always mean UDP was blocked.<\/p>\n<p>A useful failure report identifies the URL, tested endpoint, IP family, client version, measurement time and location. One failed attempt from one location does not prove a worldwide outage.<\/p>\n<h2>TTL and ma govern different caches<\/h2>\n<p>The TTL limits how long a DNS answer may normally be reused from a cache. The recursive DNS answers contained TTL values of 20 and 21,474 seconds for the two h3 records. Such values may show remaining cache lifetime. They do not reliably establish the original configured TTL, or prove a deliberate choice of maximum flexibility or minimum resolver load.<\/p>\n<p>A short configured TTL eases changes but may increase query load. Longer values complicate rapid corrections. DNS serve-stale also permits expired data under certain failure conditions. A TTL is therefore not a global switchover guarantee. Likewise, <code>ma<\/code> is a defined freshness limit for new alternative connections, not merely a suggestion; existing connections need not close at expiry.<\/p>\n<h2>Separate checks for advertisement and reachability<\/h2>\n<p>The examples use a placeholder. The first request displays response headers from a GET request, followed by a DNS lookup. The last command requires a curl build with HTTP\/3 support; <code>curl --version<\/code> lists available capabilities.<\/p>\n<figure style=\"--cbb-digits:1\" class=\"cbb cbb--wrap cbb--numbers wp-block-code-beautifier-block-code\" data-lang=\"bash\"><figcaption class=\"cbb-head\"><span class=\"cbb-lang\">Shell<\/span><span class=\"cbb-actions\"><button type=\"button\" class=\"cbb-button cbb-button--wrap\" data-cbb-action=\"wrap\" aria-pressed=\"true\" title=\"Wrap long lines\"><svg aria-hidden=\"true\" focusable=\"false\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"><path d=\"M2 4h12M2 8h9.5a2.5 2.5 0 0 1 0 5H8m0 0 1.5-1.5M8 13l1.5 1.5M2 12h3\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><span class=\"cbb-sr\">Wrap long lines<\/span><\/button><button type=\"button\" class=\"cbb-button cbb-button--copy\" data-cbb-action=\"copy\" data-cbb-done=\"Copied\" data-cbb-failed=\"Press Ctrl+C to copy\"><svg aria-hidden=\"true\" focusable=\"false\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"><rect x=\"5.5\" y=\"5.5\" width=\"8\" height=\"8.5\" rx=\"1.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"\/><path d=\"M10.5 3.5V3A1.5 1.5 0 0 0 9 1.5H4A1.5 1.5 0 0 0 2.5 3v6.5A1.5 1.5 0 0 0 4 11h.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"\/><\/svg><span class=\"cbb-button-label\" aria-live=\"polite\">Copy<\/span><\/button><\/span><\/figcaption><pre class=\"cbb-pre\" tabindex=\"0\"><code class=\"cbb-code language-bash\" style=\"counter-reset:cbb-line 0;\"><span class=\"cbb-line\"><span class=\"cbb-function\">curl<\/span> <span class=\"cbb-attr\">--silent<\/span> <span class=\"cbb-attr\">--show-error<\/span> <span class=\"cbb-attr\">--max-time<\/span> <span class=\"cbb-number\">15<\/span> <span class=\"cbb-attr\">--dump-header<\/span> - \\\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-attr\">--output<\/span> \/dev\/null https:\/\/example.com\/\n<\/span><span class=\"cbb-line\"><span class=\"cbb-function\">dig<\/span> +noall +answer HTTPS example.com\n<\/span><span class=\"cbb-line\">kdig <span class=\"cbb-attr\">-t<\/span> HTTPS example.com\n<\/span><span class=\"cbb-line\"><span class=\"cbb-function\">curl<\/span> <span class=\"cbb-attr\">--version<\/span>\n<\/span><span class=\"cbb-line\"><span class=\"cbb-function\">curl<\/span> <span class=\"cbb-attr\">--http3-only<\/span> <span class=\"cbb-attr\">--silent<\/span> <span class=\"cbb-attr\">--show-error<\/span> <span class=\"cbb-attr\">--max-time<\/span> <span class=\"cbb-number\">15<\/span> \\\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-attr\">--output<\/span> \/dev\/null <span class=\"cbb-attr\">--write-out<\/span> <span class=\"cbb-string\">'HTTP %{http_version}\\n'<\/span> \\\n<\/span><span class=\"cbb-line\">  https:\/\/example.com\/<\/span><\/code><\/pre><\/figure>\n<p>A <code>--http3-only<\/code> request tests QUIC without TCP fallback. It does not fully demonstrate that a browser discovers the HTTPS record and selects its alternative endpoint. A different target name or port requires a separate check of that exact endpoint. Redirects may also lead to another host and need separate interpretation.<\/p>\n<p>The <a href=\"https:\/\/www.lukaswojcik.com\/blog\/en\/toolbox\/http3-alt-svc-discovery-checker\/\">HTTP\/3 and Alt-Svc Discovery Checker<\/a> combines DNS display, protocol attempts and a further request using an Alt-Svc cache. The inspected implementation does not follow HTTPS aliases, does not apply the DNS target and port to the direct QUIC test, and does not fully handle truncated DNS responses. The second request is a curl test, not a complete browser visit. Individual findings remain useful, but this does not establish comprehensive DNS discovery testing.<\/p>\n<p>The distinction between a forced protocol test and actual client behaviour is also covered in <a href=\"https:\/\/www.lukaswojcik.com\/blog\/?p=13619\">HTTP\/3 on a First Visit: How a Client Discovers the Protocol and What Twenty Sites Answered<\/a>.<\/p>\n<div class=\"lw-faq\"><h2>Questions and answers<\/h2>\n<h3>Is adding the DNS record enough?<\/h3>\n<p>No. The advertised endpoint must support the protocol, provide a suitable certificate and be reachable on the specified UDP port. DNS, TLS configuration, the web server or CDN, and the firewall must agree. The record alone does not create a QUIC service.<\/p>\n<h3>How should a controlled rollout work?<\/h3>\n<p>The service and intended UDP port are prepared first. Tests from suitable external networks follow before publication of DNS or Alt-Svc advertisements. HTTP\/3 is not restricted to port 443. Withdrawal requires early planning for cache lifetimes, changed advertisements and, where appropriate, sending <code>Alt-Svc: clear<\/code> to clients that can receive it. Existing connections and cached configurations require a transition period; merely removing a header does not immediately erase remote caches.<\/p>\n<h3>Does EDNS0 prevent every truncated answer?<\/h3>\n<p>No. EDNS0 advertises a larger supported UDP payload. Large answers can still be truncated or fail on the network path; handling the TC bit and an appropriate fallback, usually DNS over TCP, remains necessary. Not every HTTPS record with ECH necessarily exceeds 512 bytes.<\/p>\n<h3>What does TYPE65 mean in the output?<\/h3>\n<p>An older tool may show an unknown DNS type in generic form with raw data. A current version of dig or kdig displays recognised HTTPS parameters more readably. Seeing an <code>ech<\/code> field still does not confirm a successful ECH connection.<\/p><\/div>\n<div class=\"lw-quellen\"><h2>Sources<\/h2><ul><li><a href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc9114.html\" target=\"_blank\" rel=\"noopener noreferrer\">RFC 9114: HTTP\/3<\/a><\/li><li><a href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc9460.html\" target=\"_blank\" rel=\"noopener noreferrer\">RFC 9460: SVCB and HTTPS Records<\/a><\/li><li><a href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc7838.html\" target=\"_blank\" rel=\"noopener noreferrer\">RFC 7838: HTTP Alternative Services<\/a><\/li><li><a href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc8767.html\" target=\"_blank\" rel=\"noopener noreferrer\">RFC 8767: DNS Serve-Stale<\/a><\/li><li><a href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc9848.html\" target=\"_blank\" rel=\"noopener noreferrer\">RFC 9848: ECH with DNS Service Bindings<\/a><\/li><li><a href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc9849.html\" target=\"_blank\" rel=\"noopener noreferrer\">RFC 9849: TLS Encrypted Client Hello<\/a><\/li><li><a href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc6891.html\" target=\"_blank\" rel=\"noopener noreferrer\">RFC 6891: EDNS(0)<\/a><\/li><li><a href=\"https:\/\/curl.se\/docs\/manpage.html\" target=\"_blank\" rel=\"noopener noreferrer\">curl manual<\/a><\/li><\/ul><\/div>","protected":false},"excerpt":{"rendered":"<p>HTTPS DNS records can announce HTTP\/3 before the first HTTP request. Alt-Svc can also help during the same page view. A historical sample of twenty domains illustrates the mechanisms, cache rules and testing limits.<\/p>\n","protected":false},"author":1,"featured_media":24478,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[158],"tags":[91142,91243,91315],"class_list":["post-15671","post","type-post","status-publish","format-standard","hentry","category-tutorials-en-web-development","tag-dns","tag-networking","tag-web-performance"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>HTTPS Records in DNS: How HTTP\/3 Discovery Works | Lukas Wojcik<\/title>\n<meta name=\"description\" content=\"How the HTTPS DNS record announces HTTP\/3 before the first connection, what twenty domains publish, and why one record deliberately leaves h3 out.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.lukaswojcik.com\/blog\/en\/web-development\/tutorials-en-web-development\/https-records-in-dns-how-http-3-discovery-works\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"HTTPS Records in DNS: How HTTP\/3 Discovery Works | Lukas Wojcik\" \/>\n<meta property=\"og:description\" content=\"How the HTTPS DNS record announces HTTP\/3 before the first connection, what twenty domains publish, and why one record deliberately leaves h3 out.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/en\/web-development\/tutorials-en-web-development\/https-records-in-dns-how-http-3-discovery-works\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-11-06T07:05:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/10\/quality-hero-15671-20261025.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Lukas Wojcik\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Lukas Wojcik\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/web-development\\\/tutorials-en-web-development\\\/https-records-in-dns-how-http-3-discovery-works\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/web-development\\\/tutorials-en-web-development\\\/https-records-in-dns-how-http-3-discovery-works\\\/\"},\"author\":{\"name\":\"Lukas Wojcik\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"headline\":\"HTTPS Records in DNS: How HTTP\\\/3 Discovery Works\",\"datePublished\":\"2026-11-06T07:05:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/web-development\\\/tutorials-en-web-development\\\/https-records-in-dns-how-http-3-discovery-works\\\/\"},\"wordCount\":1225,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/web-development\\\/tutorials-en-web-development\\\/https-records-in-dns-how-http-3-discovery-works\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/quality-hero-15671-20261025.png\",\"keywords\":[\"DNS\",\"Networking\",\"Web Performance\"],\"articleSection\":[\"Tutorials\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/web-development\\\/tutorials-en-web-development\\\/https-records-in-dns-how-http-3-discovery-works\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/web-development\\\/tutorials-en-web-development\\\/https-records-in-dns-how-http-3-discovery-works\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/web-development\\\/tutorials-en-web-development\\\/https-records-in-dns-how-http-3-discovery-works\\\/\",\"name\":\"HTTPS Records in DNS: How HTTP\\\/3 Discovery Works | Lukas Wojcik\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/web-development\\\/tutorials-en-web-development\\\/https-records-in-dns-how-http-3-discovery-works\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/web-development\\\/tutorials-en-web-development\\\/https-records-in-dns-how-http-3-discovery-works\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/quality-hero-15671-20261025.png\",\"datePublished\":\"2026-11-06T07:05:00+00:00\",\"description\":\"How the HTTPS DNS record announces HTTP\\\/3 before the first connection, what twenty domains publish, and why one record deliberately leaves h3 out.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/web-development\\\/tutorials-en-web-development\\\/https-records-in-dns-how-http-3-discovery-works\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/web-development\\\/tutorials-en-web-development\\\/https-records-in-dns-how-http-3-discovery-works\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/web-development\\\/tutorials-en-web-development\\\/https-records-in-dns-how-http-3-discovery-works\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/quality-hero-15671-20261025.png\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/quality-hero-15671-20261025.png\",\"width\":1200,\"height\":630,\"caption\":\"HTTPS Records in DNS: How HTTP\\\/3 Discovery Works\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/web-development\\\/tutorials-en-web-development\\\/https-records-in-dns-how-http-3-discovery-works\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"HTTPS Records in DNS: How HTTP\\\/3 Discovery Works\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\",\"name\":\"Lukas Wojcik - Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\",\"name\":\"Lukas Wojcik\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"width\":424,\"height\":636,\"caption\":\"Lukas Wojcik\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\"},\"sameAs\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"HTTPS Records in DNS: How HTTP\/3 Discovery Works | Lukas Wojcik","description":"How the HTTPS DNS record announces HTTP\/3 before the first connection, what twenty domains publish, and why one record deliberately leaves h3 out.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.lukaswojcik.com\/blog\/en\/web-development\/tutorials-en-web-development\/https-records-in-dns-how-http-3-discovery-works\/","og_locale":"en_US","og_type":"article","og_title":"HTTPS Records in DNS: How HTTP\/3 Discovery Works | Lukas Wojcik","og_description":"How the HTTPS DNS record announces HTTP\/3 before the first connection, what twenty domains publish, and why one record deliberately leaves h3 out.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/en\/web-development\/tutorials-en-web-development\/https-records-in-dns-how-http-3-discovery-works\/","og_site_name":"Lukas Wojcik - Blog","article_published_time":"2026-11-06T07:05:00+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/10\/quality-hero-15671-20261025.png","type":"image\/png"}],"author":"Lukas Wojcik","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Lukas Wojcik","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/web-development\/tutorials-en-web-development\/https-records-in-dns-how-http-3-discovery-works\/#article","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/web-development\/tutorials-en-web-development\/https-records-in-dns-how-http-3-discovery-works\/"},"author":{"name":"Lukas Wojcik","@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"headline":"HTTPS Records in DNS: How HTTP\/3 Discovery Works","datePublished":"2026-11-06T07:05:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/web-development\/tutorials-en-web-development\/https-records-in-dns-how-http-3-discovery-works\/"},"wordCount":1225,"commentCount":0,"publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/web-development\/tutorials-en-web-development\/https-records-in-dns-how-http-3-discovery-works\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/10\/quality-hero-15671-20261025.png","keywords":["DNS","Networking","Web Performance"],"articleSection":["Tutorials"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.lukaswojcik.com\/blog\/en\/web-development\/tutorials-en-web-development\/https-records-in-dns-how-http-3-discovery-works\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/web-development\/tutorials-en-web-development\/https-records-in-dns-how-http-3-discovery-works\/","url":"https:\/\/www.lukaswojcik.com\/blog\/en\/web-development\/tutorials-en-web-development\/https-records-in-dns-how-http-3-discovery-works\/","name":"HTTPS Records in DNS: How HTTP\/3 Discovery Works | Lukas Wojcik","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/web-development\/tutorials-en-web-development\/https-records-in-dns-how-http-3-discovery-works\/#primaryimage"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/web-development\/tutorials-en-web-development\/https-records-in-dns-how-http-3-discovery-works\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/10\/quality-hero-15671-20261025.png","datePublished":"2026-11-06T07:05:00+00:00","description":"How the HTTPS DNS record announces HTTP\/3 before the first connection, what twenty domains publish, and why one record deliberately leaves h3 out.","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/web-development\/tutorials-en-web-development\/https-records-in-dns-how-http-3-discovery-works\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/en\/web-development\/tutorials-en-web-development\/https-records-in-dns-how-http-3-discovery-works\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/web-development\/tutorials-en-web-development\/https-records-in-dns-how-http-3-discovery-works\/#primaryimage","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/10\/quality-hero-15671-20261025.png","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/10\/quality-hero-15671-20261025.png","width":1200,"height":630,"caption":"HTTPS Records in DNS: How HTTP\/3 Discovery Works"},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/web-development\/tutorials-en-web-development\/https-records-in-dns-how-http-3-discovery-works\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"HTTPS Records in DNS: How HTTP\/3 Discovery Works"}]},{"@type":"WebSite","@id":"https:\/\/www.lukaswojcik.com\/blog\/#website","url":"https:\/\/www.lukaswojcik.com\/blog\/","name":"Lukas Wojcik - Blog","description":"","publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.lukaswojcik.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9","name":"Lukas Wojcik","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","width":424,"height":636,"caption":"Lukas Wojcik"},"logo":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg"},"sameAs":["https:\/\/www.lukaswojcik.com\/blog"]}]}},"_links":{"self":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/15671","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/comments?post=15671"}],"version-history":[{"count":7,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/15671\/revisions"}],"predecessor-version":[{"id":27273,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/15671\/revisions\/27273"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media\/24478"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=15671"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/categories?post=15671"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=15671"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}