> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tape.network/llms.txt
> Use this file to discover all available pages before exploring further.

# Uploads

`tape write` puts data on the active tape. It takes a file path, an inline message, or stdin.

<Note>
  Writing needs a connection, a signing key, and a reserved tape. For Tapenet, complete
  the [wallet and funding setup](/tapenet/access), then follow the
  [CLI quickstart](/tools/cli) to reserve a tape.
</Note>

## The write command

Three input forms, one command:

```bash theme={null}
tape write ./archive.tar
tape write --message "hello"
cat data.bin | tape write --stdin
```

```text Output theme={null}
address:          7trKAddressExampleBase58Value11111111111111
bytes written:    1048576
```

Pass `--tape` to target a tape other than the active one.

Size decides what happens. Inputs up to 825 bytes are written inside the transaction itself and return when the Solana write finalizes. Larger inputs up to 64 MiB become one certified track and return its address. Files over 64 MiB are written as streams and return a stream-manifest address. Those thresholds are CLI defaults, and the [writing page](/sdks/writing) explains the paths behind them; [tracks](/protocol/architecture/tracks) covers the vocabulary.

Certification is part of the flow. When the command returns an address for a coded write, the track is certified: the network has proven it holds your data.

## Named objects

`tape write` stores raw data by address. To store under a name, so the data shows up in listings, use `tape object put` instead. The [objects page](/tools/cli/commands/objects) covers those commands.

## Verifying an upload

Two commands confirm the write landed, or look the tape up in the [explorer](/tools/explorer):

```bash theme={null}
tape info           # tape usage went up
tape object ls      # named objects appear in the listing
```
