ChatGPT vs Claude Prompt Formatter

Convert a prompt between ChatGPT and Claude best-practice formats

Converts between GPT-style system/user message JSON and Claude-style top-level system plus Human/Assistant turns in one click, re-shaping the envelope while preserving all of your prompt's intent. It runs free in your browser on Gera Tools, with nothing uploaded.

Last updated Source: Gera Tools

What actually differs between the two formats?

ChatGPT puts the system instruction inside the messages array as a system role. Claude takes a separate top-level system parameter and uses a Human/Assistant turn structure. The content is the same; only the envelope differs.

ChatGPT vs Claude prompt formatter

ChatGPT and Claude accept the same ideas but expect different envelopes. GPT wants a messages array with a system role inside it; Claude wants a separate top-level system parameter and Human/Assistant turns. Copying a prompt straight from one to the other usually means hand-editing the structure. The ChatGPT vs Claude prompt formatter does that conversion in one click while preserving your wording.

How it works

You tell the tool which format your prompt is in and paste it using System:, User:, or Human: labels. Converting GPT → Claude pulls the system instruction out into Claude’s top-level system field and rebuilds the body as a Human turn. Converting Claude → GPT folds the leading system paragraph back into a system message and emits valid OpenAI-style JSON. Only the envelope changes — your intent, constraints, and examples stay intact. Everything runs locally with no API key and no network call.

The structural difference in detail

OpenAI / ChatGPT format uses a flat messages array where every turn including the system instruction is an object with a role field:

{
  "model": "gpt-4o",
  "messages": [
    { "role": "system", "content": "You are a helpful assistant." },
    { "role": "user", "content": "Summarise this article." }
  ]
}

Anthropic / Claude format promotes the system instruction to a separate top-level parameter, and turns use Human and Assistant as the role labels:

{
  "model": "claude-opus-4-5",
  "system": "You are a helpful assistant.",
  "messages": [
    { "role": "user", "content": "Summarise this article." }
  ]
}

The content of the system instruction and the user message are identical in both examples. Only the envelope differs — which is exactly what this converter re-shapes.

When to use this tool

  • You have tested a prompt in ChatGPT’s Playground and want to try the same instruction in Claude’s API without rewriting it by hand.
  • You are building an application that needs to support both providers and want to maintain a single canonical prompt, converting to each provider’s expected format at call time.
  • You inherited a prompt written for one API and need to port it to the other quickly.

Tips and edge cases

  • Label your input clearly. A System: line tells the tool what belongs in the system slot; without it, everything becomes the user message.
  • Set Claude’s system separately in your API call. The converted Claude output marks the system text explicitly — pass it as the top-level system parameter in the API request, not as a turn inside the messages array.
  • Wrap pasted documents in XML-style tags. Claude responds well to structured tags around long inputs such as <document> or <article>. If your prompt embeds a long passage, add tags around it for the Claude version.
  • Multi-turn prompts. If your prompt includes multiple back-and-forth turns (alternating User/Human and Assistant), the converter will re-label all of them. Verify the turn order after conversion.
  • Round-trip to sanity-check. Convert one direction then convert back; if the prompt is identical to the original, no content was lost.