CFN Intrinsic Function Resolver - Resolve CloudFormation Intrinsic Functions Locally
First Published:
Last Updated:
Paste an AWS CloudFormation template (YAML or JSON) and this tool resolves the intrinsic functions — Fn::Sub, Fn::Join, Ref, Fn::GetAtt, Fn::FindInMap, Fn::If, Fn::Equals, Fn::Base64, Fn::GetAZs and others — against the Parameter values and pseudo parameters you supply. All processing is performed entirely in your browser using client-side JavaScript. No data is transmitted to any server. Your templates never leave your device.
- This tool is provided "AS IS" without any warranties of any kind.
- This is a preview tool. It is NOT a substitute for
aws cloudformation validate-templateorcfn-lint. Fn::GetAttreturns a placeholder stringLogicalId.Attributebecause resources have not been created.Fn::ImportValueandTransformare not resolved to their real values.- Conditions are evaluated, but resources that depend on a false Condition are NOT removed from the output.
- By using this tool, you accept full responsibility for any outcomes.
This tool uses client-side JavaScript for all processing. No data is transmitted to servers, no files are uploaded online, all processing happens locally in your browser. Once loaded, this tool continues to work even without an internet connection. For more details, please refer to our Web Tools Disclaimer.
.yaml / .yml / .json / .template file here, or click to browse.
Parameters section is loaded.Features
- CloudFormation short-tag YAML support: parses
!Ref,!Sub,!Join,!GetAtt,!FindInMap,!If,!Equals,!And,!Or,!Not,!Base64,!GetAZs,!Select,!Split,!Cidr,!ImportValue,!Transform,!Conditionvia js-yaml custom schema. - Parameters auto form: parses the
Parameterssection and generates a live-editable form honouringDefault,AllowedValues,NoEcho, and typed coercion forNumber/List<Number>/CommaDelimitedList. - Pseudo parameters: editable
AWS::Region,AWS::AccountId,AWS::StackName,AWS::Partition,AWS::URLSuffix;AWS::StackIdis derived,AWS::NoValueprunes the parent key. - Recursive resolver: bottom-up evaluation with cycle detection;
${!Literal}escapes insideFn::Subare honoured. - Conditions:
Conditionsare pre-evaluated,Fn::Ifbranches lazily, and the resulting truth values are shown in the summary line. - Side-by-side diff view: original and resolved templates are rendered in two columns; remaining
Fn::*keys and placeholders are highlighted so you can spot what still needs manual review. - File drag & drop: drop a
.yaml/.json/.templatefile or paste directly; keeps the output format consistent with the input. - Preset templates: load built-in S3 bucket and ALB examples to see how the resolver behaves end-to-end.
- Copy & download: one-click copy the resolved text or download it as
resolved-template.yaml/.json. - Privacy-first: 100% client-side. Templates, parameter values, and file contents never leave your browser.
How to Use
- Click Load Preset 1 or Load Preset 2, or paste your own CloudFormation template, or drop a
.yaml/.jsonfile onto the drop zone. - The Parameters form appears automatically. Adjust values (the form defaults to each Parameter's
Default). - Adjust Pseudo Parameters (Region, AccountId, StackName, Partition, URLSuffix) as needed.
- Click Resolve, or simply edit the inputs — the template is re-resolved automatically after a short debounce.
- Review the Resolved Template pane; any tokens that could not be resolved remain highlighted.
- Use Copy Resolved or Download Resolved to export the output.
Important Notes
- Not a substitute for validation. This tool does not call the CloudFormation API and does not guarantee your template will deploy successfully. Use
aws cloudformation validate-templateandcfn-lintfor authoritative checks. - Fn::GetAtt placeholder. Real attribute values (e.g.
.Arn,.DomainName) are only known after resources are created. The resolver substitutes a string of the formLogicalId.Attributeso downstream expressions still produce readable output. - Fn::ImportValue. Export values are not fetched from any AWS account; the token is replaced with a visible placeholder so you can spot it.
- Transforms.
AWS::Include,AWS::Serverless(SAM), and other transforms are NOT expanded. Use the SAM CLI'ssam validate --lintorsam buildfor that. - Conditions. Condition truth values are computed and
Fn::Ifbranches accordingly, but resources whoseConditionevaluates tofalseare still rendered; CloudFormation's runtime resource pruning is not simulated. - NoValue.
Ref: AWS::NoValueremoves its parent key from the resolved template (matching CloudFormation behaviour for property maps). - Secrets. Although everything is local, avoid pasting production secrets / tokens — browser history, extensions, or OS screenshots could still capture them.
Third-Party Libraries:
- js-yaml (v4.1.0) - License: MIT (Vitaly Puzrin) - https://github.com/nodeca/js-yaml
References:
Tech Blog with curated related content
Web Tools Collection