# Formatting a proposal
Begin by writing out the proposal description in markdown. Confirm that it's under the charlimit (5k until Theta and 10k after).
Then generate the proposal with `--offline` so that it is not signed but the json is created. Pipe it into a file like `unsigned.json`. You can leave the description empty or with dummy text here because the CLI will try to escape the chars but likely not the way you want.
```bash
> gaiad tx gov submit-proposal software-upgrade v7-Theta \
--title v7-Theta \
--deposit 50000uatom \
--upgrade-height 10085397 \
--upgrade-info '{"binaries":{"linux/amd64":"https://github.com/cosmos/gaia/releases/download/v7.0.0/gaiad-v7.0.0-linux-amd64?checksum=sha256:dc0e5b6690a55f0f1c41ad96f068049e25d9e85d53c0587284b7f1a1f9a51545","linux/arm64":"https://github.com/cosmos/gaia/releases/download/v7.0.0/gaiad-v7.0.0-linux-arm64?checksum=sha256:994f67ec8134504ae032a1ae58caf769b5a9a1581a38705efd94ab654a7f6173","darwin/amd64":"https://github.com/cosmos/gaia/releases/download/v7.0.0/gaiad-v7.0.0-darwin-amd64?checksum=sha256:2b7425b27e1c04877f0e9230f1657bee1b3274b73bee8f550a290cc505444dbf","windows/amd64":"https://github.com/cosmos/gaia/releases/download/v7.0.0/gaiad-v7.0.0-windows-amd64.exe?checksum=sha256:1362b026e942cc16ab2b7f35a3ff39fb9075dcde70570635485d4b1866e1d036"}}' \
--description "#test\r\n\r##test" \
--from $(gaiad keys show dev -a) \
--gas auto \
--generate-only \
--sequence 29 > unsigned.json
```
> Note: you may get errors about incorrect sequence. Just update it with what the error tells you to or query yourself with `gaiad q auth <account>`.
This will generate a JSON file like:
```json
{
"body": {
"messages": [
{
"@type": "/cosmos.gov.v1beta1.MsgSubmitProposal",
"content": {
"@type": "/cosmos.upgrade.v1beta1.SoftwareUpgradeProposal",
"title": "v7-Theta",
"description": "#test\\r\\n\\r##test",
"plan": {
"name": "v7-Theta",
"time": "0001-01-01T00:00:00Z",
"height": "10085397",
"info": "{\"binaries\":{\"linux/amd64\":\"https://github.com/cosmos/gaia/releases/download/v7.0.0/gaiad-v7.0.0-linux-amd64?checksum=sha256:dc0e5b6690a55f0f1c41ad96f068049e25d9e85d53c0587284b7f1a1f9a51545\",\"linux/arm64\":\"https://github.com/cosmos/gaia/releases/download/v7.0.0/gaiad-v7.0.0-linux-arm64?checksum=sha256:994f67ec8134504ae032a1ae58caf769b5a9a1581a38705efd94ab654a7f6173\",\"darwin/amd64\":\"https://github.com/cosmos/gaia/releases/download/v7.0.0/gaiad-v7.0.0-darwin-amd64?checksum=sha256:2b7425b27e1c04877f0e9230f1657bee1b3274b73bee8f550a290cc505444dbf\",\"windows/amd64\":\"https://github.com/cosmos/gaia/releases/download/v7.0.0/gaiad-v7.0.0-windows-amd64.exe?checksum=sha256:1362b026e942cc16ab2b7f35a3ff39fb9075dcde70570635485d4b1866e1d036\"}}",
"upgraded_client_state": null
}
},
"initial_deposit": [
{
"denom": "uatom",
"amount": "50000"
}
],
"proposer": "cosmos1hxv7mpztvln45eghez6evw2ypcw4vjmsmr8cdx"
}
],
"memo": "",
"timeout_height": "0",
"extension_options": [],
"non_critical_extension_options": []
},
"auth_info": {
"signer_infos": [],
"fee": {
"amount": [],
"gas_limit": "163345",
"payer": "",
"granter": ""
}
},
"signatures": []
}
```
Take your markdown for the description and paste it into https://www.cescaper.com/. Copy the escaped format that converts new lines into `\r\n` and replace your empty description or dummy text in the JSON.