2026-05-07 23:13:25 +00:00
<!doctype html>
< html lang = "en" >
< head >
< meta charset = "utf-8" >
< meta name = "viewport" content = "width=device-width, initial-scale=1" >
< meta name = "description" content = "{{ .Site.Params.description }}" >
< meta name = "color-scheme" content = "dark light" >
< title > {{ .Site.Title }} — KMS activation reference< / title >
< link rel = "stylesheet" href = "{{ " css / style . css " | relURL } } " >
< link rel = "preconnect" href = "https://rsms.me/" >
< link rel = "stylesheet" href = "https://rsms.me/inter/inter.css" >
< / head >
< body >
< header class = "site-header" >
< div class = "wrap" >
< div class = "brand" >
< span class = "logo" > ⊞< / span >
< div >
< h1 > kms.viktorbarzin.me< / h1 >
2026-05-09 17:54:38 +00:00
< p class = "tag" > Free public KMS · Windows · Office · Project · Visio · No signup, no tracking< / p >
2026-05-07 23:13:25 +00:00
< / div >
< / div >
< nav >
< a href = "#quickstart" > Quick start< / a >
< a href = "#windows" > Windows< / a >
< a href = "#server" > Server< / a >
< a href = "#office" > Office< / a >
< a href = "#downloads" > Downloads< / a >
< a href = "#faq" > FAQ< / a >
< / nav >
< / div >
< / header >
< section class = "hero" >
< div class = "wrap" >
< h2 > Activate Microsoft Volume License products in seconds.< / h2 >
< p class = "lede" >
2026-05-09 17:54:38 +00:00
Public KMS host. Point any VL Windows / Office / Project / Visio at it and it activates —
no keys to remember, no account, no logs of personal data beyond the activation event itself.
Run the one-liner below, or use the GVLK tables further down.
2026-05-07 23:13:25 +00:00
< / p >
< div class = "kms-target" >
< div class = "kms-target-item" >
2026-05-09 17:54:38 +00:00
< span class = "muted" > Public KMS host< / span >
2026-05-07 23:13:25 +00:00
< code class = "copy" data-copy = "{{ .Site.Params.kmsHost }}:{{ .Site.Params.kmsPort }}" > {{ .Site.Params.kmsHost }}:{{ .Site.Params.kmsPort }}< / code >
< / div >
< div class = "kms-target-item" >
2026-05-09 17:54:38 +00:00
< span class = "muted" > Reachable from< / span >
< code > any IPv4 internet< / code >
2026-05-07 23:13:25 +00:00
< / div >
< div class = "kms-target-item" >
2026-05-09 17:54:38 +00:00
< span class = "muted" > Cost< / span >
< code > free, forever< / code >
2026-05-07 23:13:25 +00:00
< / div >
< / div >
< / div >
< / section >
< main class = "wrap" >
< section id = "quickstart" >
2026-05-09 17:54:38 +00:00
< h2 > Quick start< / h2 >
2026-05-07 23:13:25 +00:00
< p >
2026-05-09 17:54:38 +00:00
Open < strong > PowerShell as Administrator< / strong > on a Volume License Windows install
and paste the one-liner. The script asks what you want to activate (Windows, Office,
Project, Visio), points each at < code > {{ .Site.Params.kmsHost }}:{{ .Site.Params.kmsPort }}< / code > ,
runs the activation, and prints the result.
2026-05-07 23:13:25 +00:00
< / p >
< div class = "card terminal" >
2026-05-09 17:54:38 +00:00
< div class = "card-head" > < span > One-liner — interactive< / span > < button class = "btn-copy" data-copy-target = "quickstart-cmd" > Copy< / button > < / div >
< pre id = "quickstart-cmd" > < code > iwr -UseBasicParsing https://{{ .Site.Params.kmsHost }}{{ .Site.Params.bootstrapURL }} | iex< / code > < / pre >
2026-05-07 23:13:25 +00:00
< / div >
2026-05-09 17:54:38 +00:00
< p class = "hint" >
Prefer to read the script first? < a href = "{{ .Site.Params.bootstrapURL }}" > View kms-bootstrap.ps1< / a >
or < a href = "{{ .Site.Params.setupURL }}" > setup-kms.ps1< / a > (a smaller, non-interactive variant
that just points Windows at the KMS host and runs < code > slmgr /ato< / code > ).
< / p >
< p class = "hint" > Want to skip the script entirely? Two cmd.exe lines do the same job:< / p >
2026-05-07 23:13:25 +00:00
< div class = "card terminal" >
2026-05-09 17:54:38 +00:00
< div class = "card-head" > < span > cmd.exe — manual< / span > < button class = "btn-copy" data-copy-target = "explicit-cmd" > Copy< / button > < / div >
< pre id = "explicit-cmd" > < code > slmgr /skms {{ .Site.Params.kmsHost }}:{{ .Site.Params.kmsPort }}
2026-05-07 23:13:25 +00:00
slmgr /ato
2026-05-09 17:54:38 +00:00
cscript "C:\Program Files\Microsoft Office\Office16\ospp.vbs" /sethst:{{ .Site.Params.kmsHost }}
2026-05-07 23:13:25 +00:00
cscript "C:\Program Files\Microsoft Office\Office16\ospp.vbs" /act< / code > < / pre >
< / div >
< / section >
{{/* helper: build product family groupings */}}
{{ $windows := .Site.Data.products.windows }}
{{ $servers := .Site.Data.products.windows_server }}
{{ $office := .Site.Data.products.office }}
< section id = "windows" >
< h2 > Windows desktop< / h2 >
< p class = "muted" >
Per-edition GVLKs. < strong > Volume License only< / strong > — Home and retail SKUs cannot KMS-activate.
Click any key to copy.
< / p >
2026-05-07 23:25:13 +00:00
{{ $order := slice "Windows 11 / 10" "Windows LTSC" "Legacy desktop" }}
{{ range $family := $order }}
{{ $items := where $windows "family" $family }}
{{ if $items }}
2026-05-07 23:13:25 +00:00
< h3 class = "family-head" > {{ $family }}< / h3 >
< table class = "key-table" >
< thead > < tr > < th > Edition< / th > < th > GVLK< / th > < th class = "notes-col" > Notes< / th > < / tr > < / thead >
< tbody >
{{ range $items }}
< tr { { if . current } } class = "current" { { end } } >
< td > {{ .edition }}{{ if .current }} < span class = "badge" > current< / span > {{ end }}< / td >
< td > < code class = "copy" data-copy = "{{ .gvlk }}" > {{ .gvlk }}< / code > < / td >
< td class = "notes-col" > {{ with .notes }}{{ . }}{{ else }}—{{ end }}< / td >
< / tr >
{{ end }}
< / tbody >
< / table >
2026-05-07 23:25:13 +00:00
{{ end }}
2026-05-07 23:13:25 +00:00
{{ end }}
< details class = "card" >
< summary > How to use a GVLK on Windows< / summary >
< pre > < code > :: open cmd.exe as Administrator
2026-05-09 17:54:38 +00:00
slmgr /upk :: remove existing key
slmgr /ipk < PASTE-GVLK-HERE> :: install GVLK
slmgr /skms {{ .Site.Params.kmsHost }}:{{ .Site.Params.kmsPort }} :: point at this server
slmgr /ato :: activate
slmgr /dlv :: verify (look for " LICENSED" )< / code > < / pre >
2026-05-07 23:13:25 +00:00
< / details >
< / section >
< section id = "server" >
< h2 > Windows Server< / h2 >
< p class = "muted" > Server SKUs need only 5 unique clients to satisfy the KMS activation count threshold (vs. 25 for desktop).< / p >
2026-05-07 23:25:13 +00:00
{{ $serverOrder := slice "Windows Server 2025" "Windows Server 2022" "Windows Server 2019" "Windows Server 2016" "Windows Server 2012 R2" "Windows Server 2012" "Windows Server 2008 R2" "Windows Server 2008" }}
{{ range $family := $serverOrder }}
{{ $items := where $servers "family" $family }}
{{ if $items }}
2026-05-07 23:13:25 +00:00
< h3 class = "family-head" > {{ $family }}< / h3 >
< table class = "key-table" >
< thead > < tr > < th > Edition< / th > < th > GVLK< / th > < th class = "notes-col" > Notes< / th > < / tr > < / thead >
< tbody >
{{ range $items }}
< tr { { if . current } } class = "current" { { end } } >
< td > {{ .edition }}{{ if .current }} < span class = "badge" > current< / span > {{ end }}< / td >
< td > < code class = "copy" data-copy = "{{ .gvlk }}" > {{ .gvlk }}< / code > < / td >
< td class = "notes-col" > {{ with .notes }}{{ . }}{{ else }}—{{ end }}< / td >
< / tr >
{{ end }}
< / tbody >
< / table >
2026-05-07 23:25:13 +00:00
{{ end }}
2026-05-07 23:13:25 +00:00
{{ end }}
< / section >
< section id = "office" >
< h2 > Office · Project · Visio< / h2 >
< p class = "muted" >
All listed editions are Volume License. Install via the
< a href = "#downloads" > Office Deployment Tool< / a > with the matching < code > Configuration.xml< / code > below
(use < code > Channel< / code > shown in each row), or manually swap a retail key with
< code > ospp.vbs /unpkey:< LAST5> < / code > + < code > /inpkey:< GVLK> < / code > and < code > /act< / code > .
< / p >
2026-05-07 23:25:13 +00:00
{{ $officeOrder := slice "Office LTSC 2024" "Office LTSC 2021" "Office 2019" "Office 2016" }}
{{ range $family := $officeOrder }}
{{ $items := where $office "family" $family }}
{{ if $items }}
2026-05-07 23:13:25 +00:00
< h3 class = "family-head" > {{ $family }}< / h3 >
< table class = "key-table" >
< thead > < tr > < th > Edition< / th > < th > Product ID< / th > < th > GVLK< / th > < th class = "notes-col" > Channel< / th > < / tr > < / thead >
< tbody >
{{ range $items }}
< tr { { if . current } } class = "current" { { end } } >
< td > {{ .edition }}{{ if .current }} < span class = "badge" > current< / span > {{ end }}< / td >
< td > < code class = "muted" > {{ .product }}< / code > < / td >
< td > < code class = "copy" data-copy = "{{ .gvlk }}" > {{ .gvlk }}< / code > < / td >
< td class = "notes-col" > {{ .channel }}< / td >
< / tr >
{{ end }}
< / tbody >
< / table >
2026-05-07 23:25:13 +00:00
{{ end }}
2026-05-07 23:13:25 +00:00
{{ end }}
< details class = "card" >
< summary > Sample Configuration.xml — Office Pro Plus 2024 + Project Pro 2024< / summary >
< pre > < code > < Configuration>
< Add OfficeClientEdition=" 64" Channel=" PerpetualVL2024" >
< Product ID=" ProPlus2024Volume" PIDKEY=" XJ2XN-FW8RK-P4HMP-DKDBV-GCVGB" >
< Language ID=" en-us" />
< /Product>
< Product ID=" ProjectPro2024Volume" PIDKEY=" FQQ23-N4YCY-73HQ3-FM9WC-76HF4" >
< Language ID=" en-us" />
< /Product>
< /Add>
< Updates Enabled=" TRUE" Channel=" PerpetualVL2024" />
< Display Level=" None" AcceptEULA=" TRUE" />
< Property Name=" AUTOACTIVATE" Value=" 1" />
< Property Name=" FORCEAPPSHUTDOWN" Value=" TRUE" />
< /Configuration> < / code > < / pre >
< / details >
< details class = "card" >
< summary > Activation — bare commands< / summary >
< pre > < code > cd "C:\Program Files\Microsoft Office\Office16"
2026-05-09 17:54:38 +00:00
cscript ospp.vbs /sethst:{{ .Site.Params.kmsHost }}
cscript ospp.vbs /setprt:{{ .Site.Params.kmsPort }}
2026-05-07 23:13:25 +00:00
cscript ospp.vbs /inpkey:< PASTE-GVLK>
cscript ospp.vbs /act
cscript ospp.vbs /dstatus :: verify --LICENSED--< / code > < / pre >
< / details >
< / section >
< section id = "downloads" >
< h2 > Downloads< / h2 >
< h3 class = "family-head" > Office Deployment Tool< / h3 >
< p >
Single binary that installs every Office VL edition listed above, driven by a
< code > Configuration.xml< / code > .
< / p >
< a class = "dl" href = "{{ .Site.Data.products.downloads.odt.url }}" target = "_blank" rel = "noopener" >
{{ .Site.Data.products.downloads.odt.label }} ↗
< / a >
< p class = "hint" > {{ .Site.Data.products.downloads.odt.notes }}< / p >
< h3 class = "family-head" > Windows ISOs< / h3 >
< ul class = "dl-list" >
{{ range .Site.Data.products.downloads.windows }}
< li >
< a href = "{{ .url }}" target = "_blank" rel = "noopener" > {{ .label }} ↗< / a >
{{ with .notes }}< span class = "muted" > — {{ . }}< / span > {{ end }}
< / li >
{{ end }}
< / ul >
2026-05-09 17:54:38 +00:00
< h3 class = "family-head" > PowerShell scripts< / h3 >
< p > Both scripts are open-source, single-file, no dependencies. Read before running.< / p >
< ul class = "dl-list" >
< li >
< a href = "{{ .Site.Params.bootstrapURL }}" target = "_blank" rel = "noopener" > kms-bootstrap.ps1 ↗< / a >
< span class = "muted" > — interactive: prompts for Windows / Office / Project / Visio and activates each.< / span >
< / li >
< li >
< a href = "{{ .Site.Params.setupURL }}" target = "_blank" rel = "noopener" > setup-kms.ps1 ↗< / a >
< span class = "muted" > — minimal: < code > slmgr /skms< / code > + < code > /ato< / code > . No Office install.< / span >
< / li >
< / ul >
2026-05-07 23:13:25 +00:00
< / section >
< section id = "faq" >
< h2 > FAQ & gotchas< / h2 >
< div class = "faq" >
< details >
< summary > Why won't my retail Office activate?< / summary >
< p > KMS only grants licenses to < strong > Volume License< / strong > editions. Retail / OEM / Microsoft 365
keys reject KMS responses. Either reinstall as VL via ODT, or swap the key in place:
< code > cscript ospp.vbs /unpkey:< LAST5> < / code > followed by
< code > cscript ospp.vbs /inpkey:< GVLK> < / code > and < code > /act< / code > .< / p >
< / details >
< details >
< summary > What about Windows Home?< / summary >
< p > Home editions cannot be KMS-activated. Either upgrade to Pro/Enterprise/Education
(< code > DISM /Set-Edition< / code > or in-place reinstall) or use a retail key.< / p >
< / details >
< details >
< summary > The first activation fails with 0xC004F038< / summary >
< p > That's the KMS count threshold: 25 unique clients (or 5 servers) must contact the host before
desktop clients can activate. The host caches counts for 30 days. The vlmcsd implementation in
this server bypasses that — but real Microsoft KMS hosts enforce it. If you ever swap to a
hardware host you may need to pre-seed activations.< / p >
< / details >
< details >
< summary > Office LTSC vs Microsoft 365 — can they coexist?< / summary >
< p > No. The Click-to-Run installer refuses side-by-side. Run
< code > setup.exe /configure Remove.xml< / code > with < code > < Remove All=" TRUE" /> < / code >
first, then install the VL edition.< / p >
< / details >
< details >
2026-05-09 17:54:38 +00:00
< summary > How does auto-discovery work? Do I need it?< / summary >
< p > No — the Quick Start one-liner pins the host explicitly so auto-discovery is irrelevant
for internet visitors. It exists for managed corporate networks: the Software Protection
Service queries DNS for < code > _vlmcs._tcp.< primary-dns-suffix> < / code > , and if the SRV
resolves, Windows connects there on the returned port. If you want it on your own LAN,
publish a SRV record pointing at < code > {{ .Site.Params.kmsHost }}:{{ .Site.Params.kmsPort }}< / code >
(or any vlmcsd you self-host) and set the matching DNS suffix on each client.< / p >
< / details >
< details >
< summary > Will my activation be logged? What about privacy?< / summary >
< p > The KMS protocol itself sends your machine's hostname, your client IP (from the TCP
socket), and the product ID being activated. The server records the event in a log so
the operator can see overall traffic. No personal data beyond what the KMS protocol
itself transmits is collected; nothing is shared, sold, or retained beyond the operator's
monitoring. If that bothers you, run your own vlmcsd — it's a single binary, the source
is on < a href = "https://github.com/Wind4/vlmcsd" target = "_blank" rel = "noopener" > GitHub< / a > .< / p >
< / details >
< details >
< summary > Is this legal? Can I use it for anything?< / summary >
< p > KMS activates only < strong > Volume License (VL)< / strong > editions of Microsoft software.
VL keys are licensed per-organization by Microsoft; using a VL edition without a real VL
agreement violates Microsoft's licensing terms. This server exists for personal lab /
learning / unsupported-OS-revival use. If you don't have a VL agreement, evaluate
Windows + Office through Microsoft's free trial channels instead. The site operator is
not responsible for how visitors use the host.< / p >
2026-05-07 23:13:25 +00:00
< / details >
< details >
< summary > How long does a KMS license last?< / summary >
< p > 180 days. The client tries to renew every 7 days; one successful renewal resets the 180-day
clock. As long as a machine reaches the KMS once a quarter it stays activated indefinitely.< / p >
< / details >
< details >
< summary > Where can I see the GVLKs Microsoft publishes?< / summary >
< p > Windows: < a href = "https://learn.microsoft.com/en-us/windows-server/get-started/kms-client-activation-keys" target = "_blank" rel = "noopener" > learn.microsoft.com/.../kms-client-activation-keys< / a > .< br >
Office / Project / Visio: < a href = "https://learn.microsoft.com/en-us/deployoffice/vlactivation/gvlks" target = "_blank" rel = "noopener" > learn.microsoft.com/.../gvlks< / a > .< / p >
< / details >
< / div >
< / section >
< / main >
< footer >
< div class = "wrap" >
< p >
KMS host on this network · vlmcsd · Built with Hugo ·
< a href = "https://forgejo.viktorbarzin.me/viktor/kms-website" target = "_blank" rel = "noopener" > source< / a >
< / p >
< / div >
< / footer >
< script src = "{{ " js / clipboard . js " | relURL } } " > < / script >
< / body >
< / html >