> For the complete documentation index, see [llms.txt](https://docs.unstable.run/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.unstable.run/launching-a-coin/creating-your-coin.md).

# Creating your coin

Hit **Create coin** in the top navigation. A modal opens.

## Fields

| Field                            | Required?           | Notes                                                                                                                        |
| -------------------------------- | ------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
| **Name**                         | Yes                 | Human-readable name. Stored on-chain. Free-form — can include spaces, emoji, whatever.                                       |
| **Ticker**                       | Yes                 | Symbol. Auto-uppercased. 3-6 letters is the sweet spot.                                                                      |
| **Description**                  | No                  | What is this coin about? Free-form text — stored on-chain in a public string.                                                |
| **Logo**                         | No, but recommended | Drag-and-drop or click to upload. Any image (PNG / JPG / SVG, max 4 MB). Automatically pinned to IPFS via Pinata. See below. |
| **Twitter / X**                  | No                  | Full URL — `https://x.com/yourhandle`. On-chain.                                                                             |
| **Telegram**                     | No                  | Full URL — `https://t.me/yourgroup`. On-chain.                                                                               |
| **Website**                      | No                  | Full URL. On-chain.                                                                                                          |
| **Initial buy (optional, USDT)** | No                  | Snipe your own launch atomically. Capped at 5% of supply. See [Optional initial buy](/launching-a-coin/initial-dev-buy.md).  |

## The logo upload flow

The **Logo** field is a proper drag-and-drop zone. Drop an image (or click to browse) and Unstable:

1. Uploads the file to our server API route (`/api/upload`).
2. The server relays it to Pinata's `pinFileToIPFS` endpoint, using the platform's own Pinata JWT — you don't need a Pinata account.
3. Pinata returns an IPFS CID (like `Qm...`).
4. The field auto-fills with `ipfs://Qm...`.

If the upload succeeds you'll see a small preview thumbnail inside the drop zone, along with the pinned URI underneath.

{% hint style="info" %}
You can also **paste an existing IPFS URI** if you already pinned your logo elsewhere. Any `ipfs://Qm…` string or full HTTPS URL works — the frontend resolves both.
{% endhint %}

Every browser that opens your token page fetches the image via `https://gateway.pinata.cloud/ipfs/{cid}`. If the gateway is slow or unreachable, the UI falls back to a generated pattern-avatar based on your ticker.

## Everything else — on-chain socials

Description, Twitter, Telegram, and Website are each stored in a plain `string public` slot on your token contract:

```solidity
string public logo;         // ipfs://Qm...
string public description;
string public twitter;
string public telegram;
string public website;
```

That means every indexer, bot, aggregator, or Etherscan-style explorer reads the exact same values from the exact same source. No off-chain database, no admin who can rename them later.

Once the launch transaction confirms, these slots are **immutable**. Choose your links carefully.

## The Deploy button

At the bottom of the modal:

> **Deployment fee $2.00 USDT**

Click **Deploy on Stable**. Your wallet pops up **twice**:

1. **Approve $2 (+ initial buy amount, if any) USDT** to the factory.
2. **`launchToken(…)`** — the actual creation.

Both confirm in sub-seconds. When the second tx lands, a toast pops up with the short address of your fresh token, the modal closes, and the board on the homepage refetches so your card appears at the top.

## Common mistakes

| Symptom                                     | Cause & fix                                                                                              |
| ------------------------------------------- | -------------------------------------------------------------------------------------------------------- |
| "Name and ticker required"                  | Both fields are empty. Fill them.                                                                        |
| "Upload failed: PINATA\_JWT not configured" | Server-side issue — please report. The *paste an ipfs\://…* fallback still works.                        |
| "Deploy failed: insufficient funds"         | You don't have $2 + gas + optional initial buy in USDT0. Top up and retry.                               |
| "InitialBuyExceedsCap"                      | Your `usdtIn` would return more than 5% of supply. Lower the number.                                     |
| "PoolAlreadyInitialized"                    | Someone front-ran the deterministic pool address (very rare). Try again; the salt increments per launch. |

## Next

* [Optional initial buy](/launching-a-coin/initial-dev-buy.md) — how to snipe your own launch, and why the cap exists
* [After the launch](/launching-a-coin/after-launch.md) — the first few minutes of a new token's life


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.unstable.run/launching-a-coin/creating-your-coin.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
