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-template or cfn-lint.
  • Fn::GetAtt returns a placeholder string LogicalId.Attribute because resources have not been created.
  • Fn::ImportValue and Transform are 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.

Sample Presets
Drop a .yaml / .yml / .json / .template file here, or click to browse.
Parameters
No Parameters detected. The Parameters form will appear here once a template with a Parameters section is loaded.
Pseudo Parameters
Original Template

    
Resolved Template

    

Features

  • CloudFormation short-tag YAML support: parses !Ref, !Sub, !Join, !GetAtt, !FindInMap, !If, !Equals, !And, !Or, !Not, !Base64, !GetAZs, !Select, !Split, !Cidr, !ImportValue, !Transform, !Condition via js-yaml custom schema.
  • Parameters auto form: parses the Parameters section and generates a live-editable form honouring Default, AllowedValues, NoEcho, and typed coercion for Number / List<Number> / CommaDelimitedList.
  • Pseudo parameters: editable AWS::Region, AWS::AccountId, AWS::StackName, AWS::Partition, AWS::URLSuffix; AWS::StackId is derived, AWS::NoValue prunes the parent key.
  • Recursive resolver: bottom-up evaluation with cycle detection; ${!Literal} escapes inside Fn::Sub are honoured.
  • Conditions: Conditions are pre-evaluated, Fn::If branches 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 / .template file 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

  1. Click Load Preset 1 or Load Preset 2, or paste your own CloudFormation template, or drop a .yaml / .json file onto the drop zone.
  2. The Parameters form appears automatically. Adjust values (the form defaults to each Parameter's Default).
  3. Adjust Pseudo Parameters (Region, AccountId, StackName, Partition, URLSuffix) as needed.
  4. Click Resolve, or simply edit the inputs — the template is re-resolved automatically after a short debounce.
  5. Review the Resolved Template pane; any tokens that could not be resolved remain highlighted.
  6. 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-template and cfn-lint for 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 form LogicalId.Attribute so 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's sam validate --lint or sam build for that.
  • Conditions. Condition truth values are computed and Fn::If branches accordingly, but resources whose Condition evaluates to false are still rendered; CloudFormation's runtime resource pruning is not simulated.
  • NoValue. Ref: AWS::NoValue removes 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:


References:
Tech Blog with curated related content
Web Tools Collection

Written by Hidekazu Konishi