diff --git a/README.md b/README.md
index 15b1834..0f9ea5d 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,413 @@
# LRGE
-[![check](https://github.com/mbhall88/lrge/actions/workflows/check.yml/badge.svg)](https://github.com/mbhall88/lrge/actions/workflows/check.yml)
\ No newline at end of file
+[![check](https://github.com/mbhall88/lrge/actions/workflows/check.yml/badge.svg)](https://github.com/mbhall88/lrge/actions/workflows/check.yml)
+[![test](https://github.com/mbhall88/lrge/actions/workflows/test.yml/badge.svg)](https://github.com/mbhall88/lrge/actions/workflows/test.yml)
+
+**L**ong **R**ead overlap **G**enome size **E**stimation
+
+LRGE (pronounced "large") is a command line tool for estimating genome size from long read overlaps. The tool is built
+on top of the [`liblrge`][liblrge] Rust library, which is also available as a standalone library for use in other projects.
+
+> PREPRINT/PAPER COMING SOON
+
+## Table of Contents
+
+- [Installation](#installation)
+- [Usage](#usage)
+- [Method](#method)
+- [Results](#results)
+- [Benchmark](#benchmark)
+- [Citation](#citation)
+
+
+## Installation
+
+- [Precompiled binary](#precompiled-binary)
+- [Conda](#conda)
+- [Cargo](#cargo)
+- [Container](#container)
+ - [Apptainer](#apptainer)
+ - [Docker](#docker)
+- [Build from source](#build-from-source)
+
+### Precompiled binary
+
+![GitHub Downloads (all assets, all releases)](https://img.shields.io/github/downloads/mbhall88/lrge/total)
+![GitHub Release](https://img.shields.io/github/v/release/mbhall88/lrge)
+
+
+
+```shell
+curl -sSL lrge.mbh.sh | sh
+# or with wget
+wget -nv -O - lrge.mbh.sh | sh
+```
+
+You can also pass options to the script like so
+
+```
+$ curl -sSL lrge.mbh.sh | sh -s -- --help
+install.sh [option]
+
+Fetch and install the latest version of lrge, if lrge is already
+installed it will be updated to the latest version.
+
+Options
+ -V, --verbose
+ Enable verbose output for the installer
+
+ -f, -y, --force, --yes
+ Skip the confirmation prompt during installation
+
+ -p, --platform
+ Override the platform identified by the installer [default: apple-darwin]
+
+ -b, --bin-dir
+ Override the bin installation directory [default: /usr/local/bin]
+
+ -a, --arch
+ Override the architecture identified by the installer [default: aarch64]
+
+ -B, --base-url
+ Override the base URL used for downloading releases [default: https://github.com/mbhall88/lrge/releases]
+
+ -h, --help
+ Display this help message
+```
+
+### Conda
+
+![Conda Version](https://img.shields.io/conda/vn/bioconda/lrge)
+![Conda Platform](https://img.shields.io/conda/pn/bioconda/lrge)
+![Conda Downloads](https://img.shields.io/conda/dn/bioconda/lrge)
+
+```sh
+conda install -c bioconda lrge
+```
+
+### Cargo
+
+![Crates.io Version](https://img.shields.io/crates/v/lrge)
+![Crates.io Total Downloads](https://img.shields.io/crates/d/lrge)
+
+```sh
+cargo install --locked lrge
+```
+
+### Container
+
+Docker images are hosted on the GitHub Container registry.
+
+#### Apptainer
+
+Prerequisite: [`apptainer`][apptainer] (previously Singularity)
+
+```shell
+$ URI="docker://ghcr.io/mbhall88/lrge:latest"
+$ apptainer exec "$URI" lrge --help
+```
+
+The above will use the latest version. If you want to specify a version then use a
+[tag][ghcr] like so.
+
+```shell
+$ VERSION="0.1.0"
+$ URI="docker://ghcr.io/mbhall88/lrge:${VERSION}"
+```
+
+#### Docker
+
+Prerequisite: [`docker`][docker]
+
+```shell
+$ docker pull ghcr.io/mbhall88/lrge:latest
+$ docker run ghcr.io/mbhall88/lrge:latest lrge --help
+```
+
+You can find all the available tags [here][ghcr].
+
+### Build from source
+
+```shell
+$ git clone https://github.com/mbhall88/lrge.git
+$ cd lrge
+$ cargo build --release
+$ target/release/lrge -h
+```
+
+---
+
+## Usage
+
+Estimate the genome size of a set of *Mycobacterium tuberculosis* ONT [reads](https://www.ebi.ac.uk/ena/browser/view/SRR28370649)
+([true genome size](https://www.ebi.ac.uk/ena/browser/view/CP149484): 4.40 Mbp / 4405449 bp).
+
+```
+$ wget -O reads.fq.gz "ftp://ftp.sra.ebi.ac.uk/vol1/fastq/SRR283/049/SRR28370649/SRR28370649_1.fastq.gz"
+$ lrge -t 8 reads.fq.gz
+[2024-11-22T03:49:53Z INFO lrge] Running two-set strategy with 10000 target reads and 5000 query reads
+[2024-11-22T03:50:10Z INFO lrge] Estimated genome size: 4.43 Mbp (IQR: 3.16 Mbp - 4.99 Mbp)
+4426642
+[2024-11-22T03:50:10Z INFO lrge] Done!
+```
+
+The size estimate is printed to stdout, but you can also save it to a file with the `-o` flag.
+
+```
+$ lrge -t 8 reads.fq.gz -o size.txt
+[2024-11-22T03:49:53Z INFO lrge] Running two-set strategy with 10000 target reads and 5000 query reads
+[2024-11-22T03:50:10Z INFO lrge] Estimated genome size: 4.43 Mbp (IQR: 3.16 Mbp - 4.99 Mbp)
+[2024-11-22T03:50:10Z INFO lrge] Done!
+$ cat size.txt
+4426642
+```
+
+By default, LRGE uses the [two-set strategy](#two-set-strategy) with 10,000 target reads (`-T`) and 5,000 query reads
+(`-Q`). You can use the [all-vs-all strategy](#all-vs-all-strategy) by specifying the number of reads to use with the `-n` flag.
+
+
+### Standard options
+
+```
+$ lrge -h
+Genome size estimation from long read overlaps
+
+Usage: lrge [OPTIONS]
+
+Arguments:
+ Input FASTQ file
+
+Options:
+ -o, --output