YAML to Go Struct Converter
Convert YAML documents to Go struct definitions with proper types, YAML tags, and naming conventions. Automatically handles nested objects, arrays, and nullable fields. Perfect for Kubernetes configs, Docker Compose files, and Go configuration parsing.
Conversion Options
Convert null fields to pointer types
Add omitempty to YAML tags
Platform-independent integers
Order fields A-Z for consistency
Add package line at top
Include explanatory comments
Recommended Settings
Go Struct Best Practices for YAML
- •Use PascalCase for exported struct and field names (uppercase first letter)
- •Add YAML struct tags with `yaml:"fieldName"` for proper marshaling/unmarshaling
- •Use pointer types (*string, *int) for nullable/optional fields in YAML configs
- •Add omitempty to YAML tags to exclude zero-value fields from YAML output
- •Use time.Time type for ISO 8601 timestamps instead of string for type safety
Common Use Cases
- •Kubernetes: Generate Go structs from deployment manifests, ConfigMaps, and Helm values
- •Docker Compose: Create type-safe structs for docker-compose.yml parsing
- •Configuration: Convert YAML config files to strongly-typed Go structs for applications
- •CI/CD: Parse GitHub Actions, GitLab CI, or CircleCI YAML configs in Go tools
- •Ansible: Work with playbook and inventory YAML files in Go automation tools
Pro Tips
- •Paste YAML and it auto-validates - conversion happens automatically when valid
- •Nested objects automatically generate separate struct types with proper relationships
- •ISO 8601 timestamps (2024-01-01T00:00:00Z) are detected and converted to time.Time
- •All processing happens in your browser - your YAML never leaves your device
Most Popular
Most users enable pointers for nulls, omitempty tags, and include package declaration
When to Use This Tool
Generate Go structs from Kubernetes manifests (Deployments, Services, ConfigMaps, Secrets) to build kubectl plugins, operators, or custom controllers. Convert real YAML resources to type-safe Go structs with proper field types and YAML tags for marshaling/unmarshaling.
Recommended: DevOps & K8s
Transform YAML configuration files into strongly-typed Go structs for application settings. Replace untyped map[string]interface{} configs with proper structs that provide compile-time type safety, validation, and better IDE support. Essential for microservices and cloud-native apps.
Recommended: Config Management
Build Go tools that process Docker Compose files, Ansible playbooks, GitHub Actions workflows, or GitLab CI configurations. Convert YAML schemas to Go structs for type-safe YAML parsing, validation, and manipulation in automation scripts and infrastructure tools.
Recommended: Automation
Convert OpenAPI/Swagger YAML specifications to Go structs for building API servers and clients. Generate type-safe request/response structures from YAML API definitions with proper validation and serialization tags. Ideal for contract-first API development.
Recommended: API Development
How It Works
Paste your YAML data into the input field on the left side
The tool automatically validates YAML syntax using js-yaml parser
Click 'Convert to Go Struct' or paste valid YAML to trigger automatic conversion
YAML is recursively analyzed to detect types: string, int, float64, bool, arrays, nested objects
ISO 8601 timestamp strings (2024-01-01T00:00:00Z) are automatically detected and converted to time.Time
Nested objects generate separate struct types with PascalCase names derived from YAML keys
Field names are converted to PascalCase for exported fields (e.g., api_version → ApiVersion)
YAML struct tags are generated with proper format: `yaml:"fieldName,omitempty"`
Pointer types (*Type) are used for nullable fields when 'Use Pointers' option is enabled
Copy the Go code to clipboard or download as .go file ready to use in your project
All processing happens in your browser - your YAML never leaves your device
100% Private
Files never leave your device. All processing happens locally in your browser.
Lightning Fast
Powered by Client-side JavaScript with js-yaml library (v4.1.1) and intelligent type inference for optimal performance on modern browsers.
Open Source
Built with verified, open-source libraries. Fully transparent.
Frequently Asked Questions
What are Go struct YAML tags and why are they needed?
Struct tags are metadata attached to struct fields using backticks. The `yaml:"fieldName"` tag tells Go's gopkg.in/yaml.v3 or gopkg.in/yaml.v2 package how to map struct fields to YAML keys during marshaling (struct→YAML) and unmarshaling (YAML→struct). Without tags, Go uses field names directly in lowercase.
When should I use pointer types for struct fields?
Use pointer types (*string, *int, *bool) for nullable or optional fields in YAML. Pointers distinguish between zero values (0, false, "") and missing/null values (nil). This is crucial for Kubernetes configs where you need to differentiate between 'field not provided' and 'field explicitly set to zero value'.
What does the omitempty tag option do?
Adding omitempty to YAML tags (`yaml:"field,omitempty"`) tells Go to exclude the field from YAML output if it has a zero value (0, false, "", nil, empty slice/map). This reduces YAML file size and makes configs cleaner by omitting unset optional fields, similar to JSON omitempty.
How are nested YAML objects handled?
Nested objects automatically generate separate struct types. For example, 'metadata: {name: my-app}' creates both a Metadata struct and a main Config struct with a Metadata field. The tool derives struct names from YAML keys using PascalCase naming conventions.
Why use int64 instead of int?
The int type size is platform-dependent (32-bit or 64-bit). Using int64 explicitly ensures consistent behavior across all platforms and prevents overflow issues. This is especially important for replica counts, resource limits, and port numbers in Kubernetes configs.
How are timestamps detected and converted?
The tool automatically detects ISO 8601 timestamp strings (e.g., "2024-01-01T00:00:00Z") and converts them to Go's time.Time type. This provides type-safe date/time handling and enables proper time operations. The tool also adds 'import "time"' when timestamps are detected.
Will this work with Kubernetes YAML manifests?
Yes! The converter is perfect for Kubernetes YAML files. It handles complex nested structures like Deployments, Services, ConfigMaps, and generates proper Go structs with YAML tags. You can use the generated structs with client-go or custom Kubernetes controllers.
Is my YAML data secure using this tool?
Your data is completely private - all conversion happens entirely in your browser using JavaScript. Nothing is sent to any server. The tool processes YAML locally and generates Go code client-side. However, remember not to commit sensitive data like secrets in your source code.