Shop | Chapakhana

Curated print catalogue

Shop every format in one place.

Browse books, marketing kits, signage, and packaging with ready-to-order specs. Filter fast, compare formats, and ship anywhere.

Lead times 48h Color-managed Proofing included

Average rating

4.6

Feefo verified

Formats

30+

Books to boxes

Turnaround

48h

Express available

Support

24/7

Print specialists

Showing products
Sort
Paperback Book Bundle New
Books
4.6

Paperback Book Bundle

Lightweight novel-ready sets with recycled interiors.

$8.50
Paperback In stock
Hardback Photo Book Bestseller
Books
4.8

Hardback Photo Book

Gallery-grade binding with matte cover options.

$24.00
Hardback In stock
Square Lookbook Limited
Marketing
4.4

Square Lookbook

Brand-forward square books for campaigns.

$16.75
Square In stock
Layflat Portfolio Premium
Books
4.9

Layflat Portfolio

Seamless spreads ideal for photography and art.

$38.00
Layflat In stock
Magazine Run Bulk
Marketing
4.2

Magazine Run

Quick-turn glossy mags for launches.

$4.20
Magazine In stock
Notebook Stack Eco
Stationery
4.1

Notebook Stack

Wire-bound notes with soy inks.

$6.40
Notebook In stock
Pocket Zine Indie
Books
4.0

Pocket Zine

Short-run zines with uncoated feel.

$3.80
Pocket In stock
Cookbook Kit Bundle
Books
4.5

Cookbook Kit

Oil-resistant papers with foil accents.

$19.50
Cookbook In stock
Catalog Set Ready
Marketing
4.3

Catalog Set

Multi-variant catalogs with spot UV.

$7.10
Catalog In stock
Presentation Folder Saver
Stationery
3.9

Presentation Folder

Die-cut folders with custom pockets.

$2.90
Folder In stock
Large Format Poster UV Safe
Signage
4.7

Large Format Poster

Vibrant latex inks for outdoor durability.

$12.00
Poster In stock
Product Packaging Set Custom
Packaging
4.4

Product Packaging Set

Rigid boxes with embossing and liners.

$29.00
Box In stock
formatButtons.forEach(btn => { btn.addEventListener('click', () => { const value = btn.dataset.format; selectedFormat = selectedFormat === value ? '' : value; formatButtons.forEach(b => b.classList.remove('border-blue-500', 'bg-blue-50', 'text-blue-700')); if (selectedFormat) { const activeBtn = Array.from(formatButtons).find(b => b.dataset.format === selectedFormat); if (activeBtn) activeBtn.classList.add('border-blue-500', 'bg-blue-50', 'text-blue-700'); } applyFilters(); }); }); updatePriceOutput(); applyFilters(); });