Website profiles · Technology insights · Alternatives

compiler-explorer.com

Compiler Explorer is an interactive online compiler which shows the assembly output of compiled C++, Rust, Go (and many more) code.

No paid content found
Visit website
Profile views 7 Outbound visits 1 Normal
Compiler Explorer Full homepage screenshot

At a glance

Category
Development
Language
English
Paid-content signal
No paid content foundObserved
Registered
2016
Hosting
Amazon CloudFrontInferred
HTTPS certificate trusted
PassedObserved
Last updated

Website review

This review may include AI-generated content and is not individually verified. Domain, certificate and other facts come from the observed data on this page.

What is Compiler Explorer?

Compiler Explorer is an interactive online compiler that runs your source code and shows what the compiler produces — most famously the generated assembly, but also intermediate representations, optimization remarks, preprocessor output and more. You type code on the left, pick a compiler and flags on the right, and see the output update live.

It is best understood as an inspection tool, not a place to build or ship software. There is no project setup, no dependency management and no deployment: you paste a self-contained snippet and study how a specific compiler version translates it.

What you can actually do with it

  • Compare compilers and versions side by side. Put GCC next to Clang, or an older release next to a newer one, and diff the output to see what changed.
  • Test optimization levels. Switch between -O0, -O2, -O3 and architecture flags to watch loops get vectorized, functions get inlined, or code disappear entirely.
  • Check a language feature's cost. Write a small std::vector loop, a Rust iterator chain or a Go slice operation and see whether it compiles to something tight or something surprising.
  • Inspect intermediate stages. Views for LLVM IR, GCC GIMPLE/RTL, Rust MIR and HIR, and other representations help when assembly alone is too low-level to explain a behavior.
  • Execute small programs. You can run code and pass arguments or stdin, which is handy for quick experiments that don't need a local toolchain.
  • Share a link. A short link or embed preserves your code, compiler and flags, which makes it practical for bug reports, code review comments and teaching.

Who gets the most out of it

Audience Typical use
Students learning C, C++ or Rust Seeing what pointers, references, moves and templates actually compile to
Working developers Confirming whether a rewrite really removed an allocation or a copy
Performance engineers Checking vectorization, inlining and instruction selection across targets
Compiler and language contributors Reproducing and sharing minimal examples of codegen differences
Teachers and writers Embedding runnable examples in articles and course material

The main trade-off is scope: because snippets are isolated and the environment is shared, it suits questions about code generation rather than questions about your actual build, linking, or runtime environment. For a real profiling question, pair it with a local profiler; for a real build question, use your own toolchain.

A practical next step: open Compiler Explorer, paste the smallest function you care about, add -O2 and your target architecture, then switch the compiler to a second one and use the diff view. If the two outputs differ in a way you can't explain, that difference is usually the interesting part.

How do I get assembly output for my C++ code?

Use Compiler Explorer to compile a small C++ snippet and read the assembly it produces. Paste your code into the left-hand source editor, pick a compiler and options, then look at the right-hand output pane. The default view is assembly, so you can see the generated instructions immediately.

A quick workflow

  1. Open Compiler Explorer.
  2. In the source editor, paste a minimal, self-contained function. Avoid headers and dependencies if you only want to see code generation.
  3. Choose a compiler from the dropdown (for example, a recent GCC or Clang version) and set the language to C++.
  4. Leave the output pane on the assembly view. If the pane shows something else, use the output selector to switch to assembly.
  5. Add compiler flags in the arguments box to test how optimization changes the result, such as -O2 versus -O0.

What to look for

  • Optimization level: -O0 usually produces straightforward, unoptimized assembly; -O2 or -O3 shows inlining, vectorization and instruction reordering.
  • Target architecture: the assembly depends on the selected compiler and target. If you need x86-64, ARM or another target, set it explicitly.
  • Compiler differences: comparing GCC and Clang output side by side is one of the tool's most useful features. Small source changes can produce very different code.

Practical example

Write a simple function such as:

int square(int x) {
    return x * x;
}

Compile with -O2. You will likely see a short instruction sequence that multiplies the argument. Then change the function to take a const int& or use a loop, and observe how the assembly changes. This is a quick way to build intuition about what compilers do with your code.

Next step

If you want to compare compilers, duplicate the source in a second compiler tab or use the diff view. For deeper inspection, switch the output to LLVM IR or GCC tree dumps, which sit between C++ and assembly and can make optimization decisions easier to follow.

A useful decision criterion: if your goal is to understand a specific compiler's behavior, pin the compiler version and flags; if your goal is portability, check the same snippet across several compilers and targets before drawing conclusions.

Can I use Compiler Explorer with Rust or Go?

Yes. Compiler Explorer supports Rust and Go, and shows the compiled output rather than just running your code. For Rust you can inspect the assembly and also the LLVM IR, Rust MIR, Rust HIR, and macro expansions. For Go you get assembly and the compiler's own output, so you can compare what the front end and back end produce.

What each language gives you

Language Useful views Typical use
Rust Assembly, LLVM IR, MIR, HIR, macro expansion Checking whether an iterator chain or generic abstraction compiles away; reading MIR to understand borrow-checker and optimization behavior
Go Assembly, compiler output Seeing whether a slice operation allocates, how bounds checks appear, or how inlining changed a hot function

A concrete workflow

Suppose you want to know if a Rust iterator chain over a Vec compiles to a simple loop. Paste the function, select a release-style optimization level, and read the assembly. If the loop body looks tight and the calls are gone, the abstraction was erased. Then switch to MIR to confirm the control flow is what you expected. For Go, write a small function with a slice and a loop, then check the assembly for bounds-check branches and calls to runtime allocation helpers.

Practical notes

  • Choose the compiler version and flags deliberately; results differ sharply between debug and optimized builds.
  • The tool is best for small, self-contained functions. Pulling in a large crate or module tree is possible but makes the output harder to read.
  • Rust's MIR and macro-expansion views are especially useful for learning; Go's assembly view is the main draw.
  • Compiler Explorer is one option among several. Compiler Explorer is the well-known instance of the same project, and Rust on Compiler Explorer is a Rust-focused front end for it.

Next step: open a tab, select Rust or Go, and paste a ten-line function you already understand. Compare the optimized and unoptimized output side by side; that difference teaches more than reading documentation about optimization.

What compiler flags can I set in Compiler Explorer?

Compiler Explorer lets you set essentially any flag your chosen compiler accepts, not a fixed menu of options. The interface exposes a few different places to do it:

  • Compiler options field — the main text box where you type flags directly (for example optimization levels, warnings, or target settings). This is passed to the compiler as-is.
  • Detailed compiler flags — an expanded view for editing verbose or long argument lists in a separate window.
  • Libraries and Overrides — add or pin specific library versions, and override defaults.
  • Execution options — runtime arguments, stdin, and runtime tools for when you actually run the compiled program rather than just view its output.
  • Output-affecting toggles — separate controls such as Intel asm syntax, demangling, and filters for comments, directives, and library functions. These change how the output is displayed, not what the compiler receives.

A practical next step: type -O2 in the compiler options box, then compare the assembly against -O0 using the diff view. That single comparison usually teaches more about flag effects than reading a list.

One caveat worth knowing: not every flag is meaningful for every language or compiler. The UI notes when the current language or compiler doesn't support a given tool, so if an option appears inert, check that first. For a quick reference on a specific flag, the official documentation for your compiler is more reliable than guessing — for example GCC or Clang.

How do I share my compiled code with someone else?

Use the Share button at the top of the page. Compiler Explorer generates a URL containing your source code, compiler choice, compiler flags and any input, so whoever opens it sees the same setup you do.

Compiler Explorer

H3 Share options you'll see

  • Short Link — a compact URL, best for chat, email or issue trackers.
  • Full Link — the long URL that encodes everything directly; useful when you want the link to be self-contained.
  • Embed in iframe — produces HTML you can paste into a blog post, documentation page or internal wiki so the editor and its output render inline.

H3 A practical example You're debugging a template error with a colleague. Paste your code, pick the compiler version you actually ship with, add the flags that reproduce the problem, then hit Share → Short Link. Your colleague opens it, sees the identical assembly and error text, and can edit a copy without touching your original.

H3 What travels with the link, and what doesn't The link carries the code, language, compiler and options. It does not carry your local files, your build system or anything outside the editor. If your snippet depends on a header or library that isn't installed on Compiler Explorer, the recipient will see errors you don't — so check the Libraries panel and add what's needed before sharing.

H3 Choosing between the three

Situation Best option
Quick question in chat or a bug report Short Link
Link must survive where redirects are blocked Full Link
Teaching, blog post, living documentation Embed in iframe

For a long-lived example, prefer the embed: a short link is fine for a one-off conversation, but an iframe keeps the code visible in context, which matters more when readers arrive months later.

What visualizations like control flow graphs does Compiler Explorer provide?

Compiler Explorer’s visualizations are built around inspecting what a compiler does to your code, not around general program design. The main visual output is assembly, but several tools expose intermediate representations and graph-like views.

Graph and flow-oriented views

  • Control Flow Graph (CFG): shows basic blocks and how control moves between them. This is the closest match to a classic control flow graph visualization.
  • LLVM Opt Pipeline: shows the sequence of LLVM optimization passes and how the IR changes through them, useful for spotting where an optimization is applied or missed.
  • GCC pass views: GCC Tree/RTL, IPA, and pass dumps expose compiler-internal stages rather than a single tidy graph.
  • Rust MIR, Rust HIR, and Rust Macro Expansion: show Rust’s intermediate representations and macro expansion steps.
  • GHC Core, GHC STG, and GHC Cmm: Haskell compilation stages.
  • ClangIR, Clojure Macro Expansion, Yul, and Lean C output: language- or IR-specific views for those toolchains.
  • Preprocessor and AST views: not flow graphs, but they show the transformed source and its parsed structure.

Practical use

A developer debugging why a loop was not vectorized might open the LLVM Opt Pipeline, find the relevant pass, then switch to the CFG or IR view to see the actual block structure. A Rust user investigating ownership or borrow-check behavior would get more from MIR than from assembly. A compiler student comparing GCC and Clang would use tree/RTL dumps on one side and LLVM IR on the other.

Trade-offs

These views are compiler-specific and can be dense. CFG output is usually the most immediately readable graph, while pass pipelines and IR dumps require familiarity with the compiler’s terminology. Some visualizations are only available for certain languages or compilers, and the interface notes when the current language or compiler does not support a tool.

If you want to see what is available for your code, paste a small, self-contained example into Compiler Explorer, choose your compiler, and open the “Add tool” menu to select a visualization such as Control Flow Graph or LLVM Opt Pipeline. Start with a short function so the graph or pass list stays readable.

Related questions

More questions →
What is Compiler Explorer?

Compiler Explorer is a browser-based interactive compiler that shows the assembly output of your code as you type. You paste or write source code in one pane, pick a compiler and language, and the site compiles it server-side and displays the generated assembly (or other intermediate output) in a second pane. It supports C++, Rust, Go, and many other languages, and it requires no local installation — but it does need JavaScript, since the regular site is not functional without it.

What you can do with it

The core workflow is a two-pane editor: source on the left, compiler output on the right. From there, the tool exposes a wide range of views and options.

Core actions

  • Write or paste code in the source editor and see compiled output update live.
  • Choose from multiple compilers and language versions via the compiler selector.
  • Switch the output view to assembly, binary object, or execute the code directly.
  • Compare two versions of code side by side using the Diff View.
  • Use Tree (IDE Mode) for a structured view of the compilation.

Output and analysis views

Beyond raw assembly, Compiler Explorer can show several intermediate representations and diagnostics, depending on the language and compiler:

View What it shows
Preprocessor Preprocessed source
AST Abstract syntax tree
LLVM IR / ClangIR LLVM intermediate representation stages
Opt Pipeline Optimization pass pipeline
GCC Tree/RTL, GIMPLE GCC internal representations
Rust MIR / HIR / Macro Expansion Rust compilation stages
GHC Core / STG / Cmm Haskell compilation stages
Control Flow Graph Graph of program control flow
Device Device-side output for GPU targets

The available views depend on the selected language and compiler — the site notes when the current language or compiler does not support a given tool.

Practical features

  • Compiler flags: edit verbose compiler flags in a separate window, and use "Popular arguments" for common options.
  • Libraries: add and manage libraries, with overrides.
  • Execution: run compiled code and supply stdin and runtime arguments.
  • Formatting: apply clang-format to your source.
  • Sharing: generate a short link, full link, or an embeddable iframe.
  • Save/Load and History: keep and revisit your work.
  • Templates: start from a template rather than a blank editor.
  • UI layout: reset the UI layout or reset both code and UI layout.

Output filtering and display options

The output pane has filters that matter when assembly gets noisy:

  • Demangle identifiers (and verbose demangling).
  • Intel asm syntax toggle.
  • Filter unused labels, library functions, directives, comments, and horizontal whitespace.
  • Show or hide debug intrinsics.
  • Wrap lines.
  • Download the output.

For optimization remarks, you can choose to show missed, passed, or analysis remarks. For LLVM IR, options include dumping the full module, demangling symbols, and -fno-discard-value-names.

Who it is for

  • Learners who want to see what their C++, Rust, or Go code compiles to without setting up a toolchain.
  • Developers comparing how different compilers or optimization levels handle the same code.
  • Anyone debugging code generation, inlining, or optimization behavior.

Things to know before you start

  • JavaScript is required for the regular site. A noscript version exists if you cannot use JavaScript.
  • The site is funded through sponsorships and donations (Patreon, GitHub Sponsors, PayPal, and a shop); the page evidence does not state pricing or login requirements, so treat availability of any account-based features as unconfirmed.
  • Some tools are language- or compiler-specific and will be unavailable for certain selections.

If you want to see assembly for a snippet right now, open the site, pick your language and compiler, paste the code, and read the output pane — that is the entire loop.

What Does a Postal Code API Return? Fields, Formats, and Common Use Cases

A postal code API returns structured location data for a given ZIP Code or Canadian postal code. A typical response includes the code itself, city, state or province, county, latitude/longitude, and — where available — ZIP+4 detail. More complete services add time zone, area codes, boundary geometry, and demographic fields. You send a code (or an address), and the API sends back a machine-readable record you can store, validate, or display.

This article explains what those responses contain, how requests are usually shaped, and where postal code data fits into real applications.

First, clear up the word "code"

The keyword "code" is overloaded, and that causes real confusion for developers:

  • Postal code — the ZIP Code (U.S.) or postal code (Canada) that identifies a delivery area.
  • API key — the credential you use to authenticate your requests. It is not postal data.
  • Source code — the program you write to call the API.

When someone searches for "postal code API code," they usually want example request/response code for a postal code service. The rest of this article treats it that way.

What a postal code API actually returns

Response fields vary by provider and endpoint, but the core set is fairly consistent. A single-code lookup commonly returns:

Field Example Notes
Postal code 90210 The code you queried
City Beverly Hills May be one of several acceptable place names
State / Province CA Two-letter abbreviation
County Los Angeles Useful for tax, territory, and reporting logic
Latitude / Longitude 34.0901, -118.4065 Usually the centroid of the area
ZIP+4 90210-1234 Present only when a specific delivery segment is known
Time zone America/Los_Angeles Helps with scheduling and display
Area codes 310, 424 Regional phone context

Richer datasets add 90+ fields: boundaries, population, income, elevation, and more. You rarely need all of them — request only what your application uses.

A representative JSON response

{
  "postal_code": "90210",
  "city": "Beverly Hills",
  "state": "CA",
  "county": "Los Angeles",
  "latitude": 34.0901,
  "longitude": -118.4065,
  "timezone": "America/Los_Angeles",
  "area_codes": ["310", "424"]
}

XML responses carry the same information in tag form. Choose based on what your stack parses most easily; JSON is the common default.

Common request patterns

Most postal code APIs support four patterns. Knowing which one you need prevents wasted calls.

1. Lookup by code

You have a code and want its details. This is the simplest and fastest call.

GET /lookup?code=90210

2. Reverse lookup by address

You have a street address and want to confirm or complete the code. This is the pattern behind checkout address validation.

GET /validate?street=...&city=...&state=...

3. Radius search

You have a center point and want all codes within a distance. Useful for store locators and delivery zones.

GET /radius?code=90210&miles=10

4. Batch validation

You have a file of addresses and want them cleaned in bulk. Batch endpoints trade latency for throughput and usually have their own limits.

Handling missing and ambiguous matches

Real data is messy. Plan for these cases:

  • No match — the code doesn't exist or the address is malformed. Return a clear error rather than a silent empty object.
  • Multiple matches — a city name may map to several codes, or a code may span several acceptable city names. Decide whether to pick the primary or return a list.
  • Partial match — the street is valid but the ZIP+4 isn't. Fall back to the 5-digit code.
  • Stale data — codes are added, retired, and reassigned. Refresh your dataset on a regular schedule.

A practical rule: validate at the point of entry, store the normalized result, and never re-derive it later from raw user input.

Practical use cases

  • Checkout address validation — catch typos before shipping, reduce failed deliveries.
  • Shipping zone lookup — map a code to a zone, carrier route, or rate table.
  • Data enrichment — append county, coordinates, or demographics to existing records.
  • Store and service locators — radius search to find nearby branches or coverage areas.
  • Territory and tax logic — county and boundary data drive jurisdiction rules.

Licensing and data-source considerations

Postal code data originates with national authorities — USPS in the United States and Canada Post in Canada. Providers license and repackage it, which is why accuracy, update frequency, and field coverage differ between services. Before committing:

  • Confirm the data source and how often it refreshes.
  • Check whether ZIP+4 and boundary data are included or sold separately.
  • Review usage limits and whether batch processing is allowed.
  • Read the license terms for redistribution and storage.

Pricing and plan details change, so check the provider's current documentation rather than relying on secondhand figures.

Getting started

  1. Decide which request pattern you need (lookup, reverse, radius, or batch).
  2. Pick the fields you'll actually store.
  3. Write a small test call and inspect the raw response.
  4. Add error handling for no-match and ambiguous cases.
  5. Cache results where the same codes repeat.

A postal code API is ultimately a translation layer: you give it a code or an address, and it gives back structured location facts. Understand the fields, match them to your use case, and handle the messy edges — that's most of the work.

Which languages and compilers does Compiler Explorer support?

Compiler Explorer supports C++, Rust, Go, and many other languages, and for most of them you can choose among multiple compilers and compiler versions. The site is an interactive online compiler that shows the assembly output of your code, so the practical answer is: if a language has a compiler that can emit assembly or an intermediate representation, it is likely available. The exact list changes over time, so the authoritative source is the compiler dropdown on the site itself.

What the site states directly

The site description says Compiler Explorer is an interactive online compiler that shows the assembly output of compiled C++, Rust, Go (and many more) code. That confirms three named languages and explicitly leaves the list open-ended.

Languages visible in the interface

The page evidence lists output and analysis tools tied to specific toolchains, which indicates the breadth of support beyond the three named languages:

  • C / C++ — the core use case, with assembly output, preprocessor, AST, LLVM IR, and optimization pipeline views.
  • Rust — with Rust MIR, Rust HIR, and Rust macro expansion views.
  • Go — listed in the site description.
  • Haskell — GHC Core, GHC STG, and GHC Cmm views.
  • Lean — a Lean C output view.
  • Clojure — a Clojure macro expansion view.
  • Solidity — a Yul (Solidity IR) view.
  • Ada — GNAT debug tree and GNAT debug expanded code views.

This is not a complete list. It reflects the toolchains that have dedicated output panes in the interface, which is a subset of everything the site can compile.

Compilers and versions

For a given language, Compiler Explorer typically offers several compilers and several versions of each. The interface includes a version tree and a compiler selector, and the page evidence shows options such as "Clone Compiler," "Executor," and per-compiler argument fields. That means you can compare, for example, different GCC or Clang versions on the same C++ source, or switch between compilers for the same language.

How to check the current list

Because support is added and removed over time, verify against the live site rather than a static list:

  1. Open Compiler Explorer.
  2. Use the language selector to see the languages currently offered.
  3. Use the compiler dropdown for that language to see available compilers and versions.
  4. Add a second compiler pane if you want to compare outputs side by side.

The site also notes that without JavaScript the regular website is not functional, and points to a noscript version — relevant if you are checking support from a restricted environment.

Practical implications

  • If you want to inspect generated assembly for C++, Rust, or Go, that is the site's core, well-supported path.
  • If you work in Haskell, Lean, Clojure, Solidity, or Ada, dedicated intermediate-representation views exist, which suggests active support rather than incidental coverage.
  • If your language is not listed, it may still be available; the interface list is the reliable check, not this summary.
Is Compiler Explorer Free to Use?

Yes. The Compiler Explorer page shows no pricing, subscription, or payment requirement anywhere. It presents itself as an interactive online compiler that displays the assembly output of compiled C++, Rust, Go, and many other languages, and every feature visible on the page — compiling, sharing, embedding, and switching compilers — is offered without a paywall or login gate. The only money-related links are voluntary support options: Become a Patron, Sponsor on GitHub, Donate via PayPal, and a Compiler Explorer Shop.

What you can use without paying

The page evidence lists these capabilities as part of the normal interface:

  • Compile and inspect output — compile to binary object, link to binary, or execute the code, and view output panes such as Preprocessor, AST, LLVM IR, Opt Pipeline, Control Flow Graph, and language-specific views like Rust MIR/HIR, GHC Core/STG/Cmm, and GNAT debug trees.
  • Share results — Share Short Link, Full Link, and Embed in iframe.
  • Save and reload — Hello Save/Load and Add new…, plus a History panel.
  • Adjust the environment — Add tool…, Libraries, Overrides, compiler flags, stdin, and runtime tools.
  • Work without JavaScript — the page states that without JavaScript the regular website is not functional, and links to a noscript version.

How to get started

  1. Open compiler-explorer.com in a browser with JavaScript enabled (otherwise use the noscript version).
  2. Pick a language and compiler in the left-hand pane.
  3. Type or paste code into the Source Editor.
  4. Press Compile (or Execute, if you want to run it) and read the assembly or other output on the right.
  5. Use Share Short Link or Full Link to send the exact code, compiler, and flags to someone else, or Embed in iframe to place it in a page.

Expected result: you see the compiler's output for your code without creating an account or entering payment details.

Common snags

  • Blank or broken interface — JavaScript is required for the regular site; switch to the noscript version if you cannot enable it.
  • A tool is unavailable — the page notes "The current language or compiler does not support this tool," so some output panes only appear for certain language/compiler combinations.
  • Output looks cluttered — use the Filters and Options controls (for example Demangle identifiers, Intel asm syntax, Hide Library Functions, Hide Debug Info) to reduce noise.

If you want to support it

Donations are optional and separate from usage. The page lists Patreon, GitHub Sponsors, PayPal, and a shop, along with a mailing list, wiki, and GitHub source for anyone who wants to contribute or follow development.

What Can You Do with Compiler Explorer?

Compiler Explorer is an interactive online compiler that shows the assembly output of compiled C++, Rust, Go, and many other languages. You can use it to see exactly what a compiler does with your code: write source in the editor, pick a compiler and version, set flags, and read the generated assembly side by side with your input. Beyond that basic loop, it offers execution, binary output, optimization remarks, AST and IR views, and diff-style comparison of two compilations.

See the assembly your code compiles to

The core workflow is: type or paste code into the source editor, choose a language and compiler from the compiler selector, and the output pane updates with the generated assembly. The output pane has its own options, including Intel asm syntax, demangling of identifiers, verbose demangling, and filters for unused labels, library functions, directives, comments, and horizontal whitespace. You can wrap lines and select all output.

This is useful when you want to confirm whether a construct compiles to a single instruction, whether a loop was vectorized, or how a template or generic instantiation was resolved.

Switch compilers, versions, and flags

You can change the compiler and its version without leaving the page, and add compiler flags through the compiler options. A "Popular arguments" list and a "Detailed Compiler Flags" window are available for editing verbose flags. You can also add libraries and overrides, and clone a compiler or executor configuration.

Because the compiler version is selectable, you can check whether behavior changed between releases — for example, whether a newer version emits a tighter instruction sequence for the same source.

Execute the code and inspect binaries

The compiler output options include compiling to a binary object, linking to a binary, and executing the code. Execution has its own settings: compilation arguments, stdin, and runtime tools. This lets you test small programs end to end rather than only reading assembly.

Use the analysis and intermediate-representation views

The "Add tool" menu exposes many views beyond assembly, including:

View What it shows
Preprocessor Source after preprocessing
AST Abstract syntax tree
LLVM IR LLVM intermediate representation
ClangIR ClangIR output
Opt Pipeline Optimization pass pipeline
Control Flow Graph Graph of basic blocks
GCC Tree/RTL, GIMPLE GCC intermediate forms
Rust MIR, Rust HIR, Rust Macro Expansion Rust-specific stages
GHC Core, GHC STG, GHC Cmm Haskell compilation stages
Lean C Output, Yul (Solidity IR) Language-specific output
Clojure Macro Expansion Macro expansion for Clojure

Several of these have their own filters and options — for example, the LLVM IR view can demangle symbols, hide debug info and instruction metadata, and filter attribute groups, comments, declarations, and library functions. The optimization pipeline view can show missed, passed, and analysis optimization remarks, and can hide inconsequential passes.

Compare two compilations

A Diff View and a Tree (IDE Mode) layout are available, and the output area supports a left/right split with its own filters. Combined with the ability to open a new tab and keep history, this makes it practical to put two compilers, two versions, or two flag sets next to each other and read the differences directly.

Share and embed your setup

You can generate a short link or full link to your current code and configuration, embed the view in an iframe, and save or load state. Templates and a version tree are also provided. Note that the regular site requires JavaScript; a noscript version is linked for when JavaScript is unavailable.

Practical notes

  • The interface includes a "Reset UI layout" and "Reset code and UI layout" option if you rearrange panes and want to start over.
  • A "Conformance View" and "Compiler Execution Only" mode exist for narrower tasks.
  • The site lists sponsors, a shop, a mailing list, a wiki, and a changelog, and states that the source is on GitHub — useful if you want to check how a feature works or report an issue.

If your goal is to understand what a specific compiler does with a specific piece of code, the shortest path is: paste the code, select the compiler and version, add the flags you care about, then read the assembly or open the IR/AST view that matches your question.

Website Overview

Identifiable technologies and additional version or configuration signals make the service easier to fingerprint, which may help targeted scanners narrow their checks. An established domain and managed infrastructure suggest continuity of operations and may support dependable delivery, although neither guarantees service quality.

Domain and Registration

Registered in 2016, this domain has about 9 years of history. That suggests continuity, although ownership and purpose may have changed. Transfer-protection status is present, helping reduce the risk of unauthorized domain transfers. The domain uses the common .com extension, which is not an independent safety signal.

DNS and Email

The lowest TTL is 60 seconds, supporting rapid record changes at the cost of more frequent lookups. Nameservers are provided by Amazon Route 53, indicating managed DNS hosting. MX records point to the Google Workspace email service. No CNAME was found; the observed records resolve directly to addresses. SPF and DMARC are configured. DKIM status is unknown.

TLS and Certificates

The certificate uses an RSA 2048-bit public key, offering broad client compatibility. The server supplied a complete certificate chain. No organization name is present in the certificate; the available fields are consistent with domain validation. The certificate was issued within the Amazon cloud or CDN ecosystem. The certificate is valid for about 197 days in total, with 101 days remaining.

HTTP and Browser Security

The Server header exposes the software version: nginx/1.24.0 (Ubuntu). This makes version-targeted checks easier, but is not proof of an exploitable vulnerability. X-Powered-By exposes backend information: Express. The checked browser-security headers were not detected, leaving fewer explicit browser-side safeguards. The x-cache, via response header indicates a CDN or caching proxy in the delivery path. No obvious internal addresses or debug information were found in the headers.

Technology Stack Analysis

The public page identifies Amazon CloudFront, nginx 1.24.0, Express, with exact versions exposed for 1 technologies. These details can narrow vulnerability checks, although exposure alone is not a vulnerability.

Search and Social Sharing

No homepage canonical URL was detected. If duplicate URLs exist, consolidation may be less explicit. Open Graph is partially configured; og:description, og:type is missing. Twitter Card metadata is configured. The title has 17 characters, within a common display range. A meta description is present, with 131 characters.

Hosting and Email

DNSAmazon Route 53
HostingAmazon CloudFront
EmailGoogle Workspace
Approximate IP geolocation (inferred; a CDN or proxy may differ from the origin server) United States flagUnited States Inferred 3.170.3.107

Registration details

RDAP / WHOIS

RegistrarAmazon Registrar, Inc.
Registered2016-10-31
Expires2027-10-31
Domain statusclient transfer prohibited
Nameserversns-1396.awsdns-46.org、ns-2034.awsdns-62.co.uk、ns-378.awsdns-47.com、ns-813.awsdns-37.net
DNSSECunsigned

DNS records

DNS

TypeNameValueTTLPriority
Acompiler-explorer.com3.170.3.10760—
Acompiler-explorer.com3.170.3.11160—
Acompiler-explorer.com3.170.3.4460—
Acompiler-explorer.com3.170.3.7160—
AAAAcompiler-explorer.com2600:9000:286a:1e00:0:e3a:4a40:93a160—
AAAAcompiler-explorer.com2600:9000:286a:5c00:0:e3a:4a40:93a160—
AAAAcompiler-explorer.com2600:9000:286a:6800:0:e3a:4a40:93a160—
AAAAcompiler-explorer.com2600:9000:286a:6e00:0:e3a:4a40:93a160—
AAAAcompiler-explorer.com2600:9000:286a:7800:0:e3a:4a40:93a160—
AAAAcompiler-explorer.com2600:9000:286a:8e00:0:e3a:4a40:93a160—
AAAAcompiler-explorer.com2600:9000:286a:c600:0:e3a:4a40:93a160—
AAAAcompiler-explorer.com2600:9000:286a:d600:0:e3a:4a40:93a160—
MXcompiler-explorer.comaspmx.l.google.com36001
MXcompiler-explorer.comalt1.aspmx.l.google.com36005
MXcompiler-explorer.comalt2.aspmx.l.google.com36005
MXcompiler-explorer.comalt3.aspmx.l.google.com360010
MXcompiler-explorer.comalt4.aspmx.l.google.com360010
NScompiler-explorer.comns-1396.awsdns-46.org172800—
NScompiler-explorer.comns-2034.awsdns-62.co.uk172800—
NScompiler-explorer.comns-378.awsdns-47.com172800—
NScompiler-explorer.comns-813.awsdns-37.net172800—
TXTcompiler-explorer.comgoogle-site-verification=uCqzvXJNW3IV25ZPjOmXyrTBA_dwzpo57znHNWU11s03600—
TXTcompiler-explorer.comv=DMARC1;p=quarantine;sp=quarantine;rua=mailto:[email protected]3600—
TXTcompiler-explorer.comv=spf1 include:_spf.google.com ~all3600—
DMARC_dmarc.compiler-explorer.comv=DMARC1; p=quarantine; rua=mailto:[email protected]3600—

TLS and certificates

TLS / SSL

AssessmentNormal configuration
Supported protocolsTLSv1.2、TLSv1.3
Negotiated protocolTLSv1.3
Certificate subjectgodbolt.org
IssuerAmazon
Valid until2027-01-06T23:59 · Remaining when checked: 101 days
Verification detailsCertificate trust: Passed · Hostname match: Passed

HTTP response headers

HTTP

HeaderValue
content-typetext/html; charset=utf-8
cache-controlpublic, max-age=30, must-revalidate
servernginx/1.24.0 (Ubuntu)

Identified technologies

Amazon CloudFrontnginx 1.24.0Express

Pages, Search and Sharing

Meta descriptionCompiler Explorer is an interactive online compiler which shows the assembly output of compiled C++, Rust, Go (and many more) code.
Canonical URLNot detected
LanguageEnglish (default)
Twitter Cardsummary
All bots 0 allowed · 0 disallowed

User reviews (0)

  • No reviews yet.