Docker Compose Network Generator
Generate a Compose networks: block, a service's networks: attachment, and the equivalent docker network create command from structured driver, ipam, and access choices.
This tool handles input and primary processing in your browser and is designed not to send the input to QuickKit’s server.
Real network name
networks: block
docker network create equivalent
Service networks: attachment
How it works
Builds the networks: block of a Compose file from structured fields, not from pasted YAML. Compose prefixes a non-external network's declared key with the project name, so a network declared as backend becomes <project>_backend on the host; an external: true network is used verbatim, with no prefix, because Compose does not manage it and expects it to already exist. external: true and a driver or ipam block are mutually exclusive -- Compose itself rejects that combination, and this tool rejects it too. internal: true means the network has no outbound access at all, not merely that its ports are unpublished: containers on an internal network cannot reach the internet or other non-internal networks through it. A gateway or ip_range requires a subnet in the same ipam entry, as docker network create rejects it with the message every ip-range or gateway must have a corresponding subnet. Gateway and ip_range values are then checked against that subnet for IPv4 and IPv6 alike. For the gateway this is the same containment check the Docker CLI and daemon perform, including rejecting an address of the other family as outside the subnet. For ip_range this tool applies the daemon's rule (moby validateIpamConfig): the range must be no wider than the subnet, have its host bits zero, and lie inside the subnet -- the CLI's own pre-check only looks at the range's first address, so the daemon is the stricter and decisive one. Zoned IPv6 literals such as fe80::1%eth0 are rejected in subnet, gateway, and ip_range, as Go's net.ParseIP and netip.ParsePrefix -- which Docker uses -- reject them. This tool does not reproduce Compose's own project-name sanitization (lowercasing, character stripping) -- provide the project name already normalized. No version: key is emitted, since it has been obsolete since Compose v2 and current Compose warns about it.