KKLinePic

Binance historical data download

Download Binance historical kline data — straight from data.binance.vision.

Binance publishes its complete candlestick history as free ZIP files on data.binance.vision: no account, no API key, no rate-limit dance. This guide explains the archive's exact URL structure for spot and futures klines, what each CSV column means (including the timestamp-unit trap in newer files), and how to go from a downloaded month of BTCUSDT candles to an annotated review chart with your own buy and sell markers on it.

KLinePic's chart backend reads the same public source — Binance's spot kline API on data-api.binance.vision, with the data.binance.vision futures archive as a fallback — so for common pairs you can render a review chart without downloading anything at all.

Review chart built on Binance public kline data with entry and exit markers
The end goal: your fills as B/S markers on Binance candles, with return, run-up, and drawdown computed for you.

What data.binance.vision actually is

data.binance.vision is Binance's public market-data archive, documented in the official binance-public-data repository. It is a plain object-storage bucket with a small file browser in front of it. Every file is a ZIP containing one CSV, published per symbol, per interval, and per calendar period, alongside a .CHECKSUM companion file for verifying the download.

The archive covers spot, USDⓈ-M futures, COIN-M futures, and options datasets. For each market you can pull klines (candlesticks), trades (every individual execution), and aggTrades (compressed trade aggregates); this guide focuses on klines, which is what you need for charting. Interval folders range from 1m, 5m, and 15m up through 1h, 4h, 1d, and beyond — spot even has a 1s folder.

The URL structure, spelled out

Every kline file follows one pattern. For spot monthly bundles:

https://data.binance.vision/data/spot/monthly/klines/{SYMBOL}/{INTERVAL}/{SYMBOL}-{INTERVAL}-{YYYY-MM}.zip

Concrete examples — one hourly month, one 15-minute month, and one daily file:

https://data.binance.vision/data/spot/monthly/klines/BTCUSDT/1h/BTCUSDT-1h-2024-01.zip
https://data.binance.vision/data/spot/monthly/klines/BTCUSDT/15m/BTCUSDT-15m-2024-01.zip
https://data.binance.vision/data/spot/daily/klines/BTCUSDT/1h/BTCUSDT-1h-2026-07-30.zip

Two details cause most failed downloads. First, the storage is case-sensitive and symbols are uppercase: a pasted URL with btcusdt in the path returns 404 where BTCUSDT succeeds. Second, monthly files only exist for completed months — they are typically published in the first days of the following month, so the current month lives only under daily/.

MarketPath prefixExample file
Spotdata/spot/monthly/klines/ or data/spot/daily/klines/BTCUSDT-1h-2024-01.zip
USDⓈ-M futuresdata/futures/um/monthly/klines/ or data/futures/um/daily/klines/ETHUSDT-15m-2024-01.zip
COIN-M futuresdata/futures/cm/monthly/klines/ or data/futures/cm/daily/klines/BTCUSD_PERP-1h-2024-01.zip

To fetch a month of BTCUSDT hourly candles from the command line:

curl -O https://data.binance.vision/data/spot/monthly/klines/BTCUSDT/1h/BTCUSDT-1h-2024-01.zip
unzip BTCUSDT-1h-2024-01.zip   # -> BTCUSDT-1h-2024-01.csv, 744 hourly rows

If you prefer clicking, the web index lets you drill down through the same folders and download files in the browser.

What's inside the CSV

Each row is one candle with twelve columns. Spot kline CSVs ship without a header row, while the futures archive files carry one — check the first line before you parse.

#ColumnMeaning
1open timeCandle start, Unix epoch in UTC. See the unit warning below.
2–5open, high, low, closePrices in the quote asset (USDT for BTCUSDT).
6volumeBase-asset volume (BTC for BTCUSDT).
7close timeCandle end, Unix epoch in UTC.
8quote asset volumeTurnover in the quote asset.
9number of tradesExecutions inside the candle.
10–11taker buy base / quote volumeThe taker-buy share of volume.
12ignoreUnused legacy field.

The timestamp-unit trap: older files record epoch milliseconds (13 digits), but newer spot files — from 2025 onward — record microseconds (16 digits). A parser that assumes milliseconds will happily place a 2025 candle in the year 56,000-something. The robust rule is to check the digit count per file before converting, rather than hard-coding a unit. All timestamps are UTC either way.

From downloaded candles to a review chart

Here is the part most archive tutorials skip: candles alone are only half a review. To learn anything from a month of data, you want your own trades drawn on top of it. There are two ways to get there in KLinePic, depending on how exact you need the candles to be.

Path 1: let KLinePic fetch the candles (the usual case)

For Binance-resolvable pairs such as BTCUSDT or ETHUSDT, KLinePic pulls public Binance klines automatically — its backend queries the spot kline API on data-api.binance.vision and falls back to the data.binance.vision futures archive when needed. So the only file you upload is your trade CSV, using the schema from the data protocol:

trade_id,symbol,event_type,position_side,time,price,quantity,fee,note
VISION-BTC-001,BTCUSDT,buy,long,2024-01-10T09:00:00+00:00,46210.50,0.05,0.00005,
VISION-BTC-001,BTCUSDT,sell,long,2024-01-12T15:00:00+00:00,47895.00,0.05,2.39,

Start from the Binance trade CSV template, or follow the Binance trade history guide to map an exchange export into these fields. Paste or upload at /upload and the chart renders with B/S markers, holding window, return, max run-up, and max drawdown — no account required.

Path 2: upload the archive candles as a custom K-line CSV

When the chart must be built on the exact file you downloaded — a backtest that consumed the archive, research that has to be reproducible bar-for-bar, or an interval or window you want pinned — convert the twelve-column archive rows into KLinePic's candle CSV and upload it together with your trades:

symbol,time,open,high,low,close,volume
BTCUSDT,2024-01-10T09:00:00+00:00,46180.00,46340.10,46102.33,46210.50,412.88
BTCUSDT,2024-01-10T10:00:00+00:00,46210.50,46333.00,46150.01,46287.20,377.41

The mapping is mechanical: keep columns 1–6 (open time, open, high, low, close, volume), convert the epoch timestamp to ISO 8601 with a +00:00 offset, drop the rest. The market data coverage guide documents when this custom-candle path is the right proof and how symbol matching works.

Workflow checklist

  1. Build the archive URL. Compose data/spot/monthly/klines/SYMBOL/INTERVAL/SYMBOL-INTERVAL-YYYY-MM.zip with an uppercase symbol; use the daily/ path for the current month.
  2. Download and unzip. Plain HTTPS — browser, curl, or wget. Verify against the .CHECKSUM file if the data feeds anything serious.
  3. Read the CSV correctly. Twelve columns, no header on spot files, epoch timestamps in UTC — 13 digits for milliseconds, 16 for microseconds.
  4. Decide whether you need to upload candles at all. For BTCUSDT-style pairs, KLinePic fetches Binance candles automatically; keep your download for research and spreadsheets.
  5. Convert to a custom K-line CSV when exactness matters. Columns 1–6 become symbol,time,open,high,low,close,volume with ISO times.
  6. Upload trades and render. Trade rows in, annotated review image out — markers at your fill prices, plus return, run-up, and drawdown.

Key facts

  • data.binance.vision is Binance's free public data archive: kline, trade, and aggTrade ZIPs for spot, USDⓈ-M, COIN-M, and options, documented at github.com/binance/binance-public-data. No API key or account is needed.
  • Spot kline path pattern: data/spot/monthly/klines/{SYMBOL}/{INTERVAL}/{SYMBOL}-{INTERVAL}-{YYYY-MM}.zip, with daily equivalents; futures live under data/futures/um/ and data/futures/cm/.
  • Symbol folders are uppercase and paths are case-sensitive; monthly bundles exist only for completed months.
  • Kline CSVs carry twelve columns (open time, OHLC, volume, close time, quote volume, trade count, taker buy volumes, ignore); spot files have no header row. Timestamps are UTC epoch values — check whether a file uses milliseconds (13 digits) or microseconds (16 digits) before converting.
  • KLinePic (klinepic.com) turns trade fills into annotated K-line review charts and fetches Binance public candles automatically for pairs such as BTCUSDT; the exact archive files can be supplied instead as a custom K-line CSV (symbol,time,open,high,low,close,volume).
  • Free to start, no account required to render; batch rendering and a documented Agent API are available, with the CSV/JSON contracts at /docs.

Common mistakes and troubleshooting

Lowercase symbol in the URL

The most common 404. The bucket is case-sensitive: /klines/btcusdt/1h/… fails, /klines/BTCUSDT/1h/… works. Uppercase the symbol in both the folder and the file name.

Asking for this month's monthly file

Monthly ZIPs appear only after the month closes. For recent days, switch to the daily/ path — same columns, one UTC day per file.

Microseconds parsed as milliseconds

Newer spot files use 16-digit microsecond timestamps. If your converted dates land tens of thousands of years in the future, divide by 1,000 first — or better, branch on digit count.

Header assumptions

Spot kline CSVs have no header row; futures archive files include one. A parser that skips the first line unconditionally silently drops a candle from every spot file.

Charting on close time

Column 1 (open time) is the candle's timestamp for charting. Using column 7 (close time) shifts every candle one interval late, and your trade markers stop lining up.

Mixed intervals in one file

Keep one interval per converted CSV. Concatenating a 1h month with a 15m month produces a timeline no charting tool can bucket sensibly.

FAQ

Is Binance historical data free to download?

Yes. data.binance.vision is Binance's public data archive. The kline, trade, and aggTrade files are plain HTTPS downloads — no account, no API key, and no authentication of any kind is required.

How do I download a month of BTCUSDT 1h klines?

Fetch https://data.binance.vision/data/spot/monthly/klines/BTCUSDT/1h/BTCUSDT-1h-2024-01.zip (replace 2024-01 with the month you want), then unzip it. Inside is a single CSV with one row per hourly candle for that month.

Why does my data.binance.vision URL return 404?

The archive is served from case-sensitive object storage and symbol folders are uppercase. A lowercase symbol such as btcusdt in the path returns 404 — write BTCUSDT. Also check that the month is complete: the current month has no monthly file yet, only daily files.

What columns are inside a Binance kline CSV?

Twelve columns: open time, open, high, low, close, volume, close time, quote asset volume, number of trades, taker buy base volume, taker buy quote volume, and an unused ignore field. Timestamps are Unix epoch values in UTC.

What is the difference between monthly and daily archive files?

Monthly files bundle a whole calendar month into one ZIP and appear shortly after the month closes. Daily files cover a single UTC day and are the way to get recent data before the monthly bundle exists. Both use the same CSV columns.

Do I need to download klines to build a Binance review chart?

Usually not. KLinePic fetches Binance public candles automatically for pairs such as BTCUSDT or ETHUSDT, so a review chart only needs your trade rows. Download the archive when you want the exact candle files for your own analysis, or upload them as a custom K-line CSV when you need full control of the data.

Related guides