Letterhead Generator - Free Business Letterhead Maker - Small Study Tools
Business & Freelance · Branding

Letterhead Generator

Design a professional letterhead, logo, contact details, QR code and social icons, framing blank space for your actual letter. Fully usable on mobile.

Everything stays in your browser, nothing is uploaded
Pro Version is Free for now
✓ Templates · Signature · Watermark · Custom fonts · Tables · Multiple logos/QR codes · 300 DPI · SVG export
Day Night
👁️ Preview
↩️ Edit History
🏢 Company
📞 Contact Details
🖼️ Logo
🏢
🔗 QR Code
Include QR code
📱 Social Media
🖌️ Design

Falls back to a standard font in the PDF if the file can't be embedded.

📄 Page
🎨 Template PRO
🖼️ Second Logo (footer) PRO
🔗 Second QR Code PRO
Include second QR code
✍️ Digital Signature PRO
Include signature block
💧 Watermark PRO
Show watermark
🖼️ Background Image PRO
📊 Body Table PRO
Include table
📖 Letterhead Tips
1Keep the header light. A letterhead frames the letter, it shouldn't compete with it for attention.
2One accent color reads as more professional than several, save extra colors for your logo.
3Test print it once before sending anything official, some printers shift margins slightly.
Scroll for more
`); w.document.close(); setTimeout(() => { w.print(); }, 300); }// ── EXPORT: PDF ─────────────────────────────────────────────── function hexToRgb(hex) { const c = hex.replace('#',''); return PDFLib.rgb(parseInt(c.slice(0,2),16)/255, parseInt(c.slice(2,4),16)/255, parseInt(c.slice(4,6),16)/255); } async function embedImgIfAny(pdfDoc, dataUrl) { if (!dataUrl) return null; try { const bytes = await (await fetch(dataUrl)).arrayBuffer(); if (dataUrl.includes('image/png')) return await pdfDoc.embedPng(bytes); return await pdfDoc.embedJpg(bytes); } catch (e) { return null; } } async function getTitleFont(pdfDoc, fallback) { if (!customFontBytes) return fallback; try { if (typeof fontkit !== 'undefined') pdfDoc.registerFontkit(fontkit); const bytes = await (await fetch(customFontBytes)).arrayBuffer(); return await pdfDoc.embedFont(bytes); } catch (e) { return fallback; } } async function downloadPDF() { const theme = getActiveTheme(); const L = computeLetterheadLayout(currentPageSize, theme.layout); const f = getFields(); const pdfDoc = await PDFDocument.create(); const bodyFont = await pdfDoc.embedFont(StandardFonts.Helvetica); const boldFallback = await pdfDoc.embedFont(StandardFonts.HelveticaBold); const titleFont = isPro ? await getTitleFont(pdfDoc, boldFallback) : boldFallback; const page = pdfDoc.addPage([L.page.w, L.page.h]); const flip = y => L.page.h - y; const textColor = hexToRgb(theme.text), accentColor = hexToRgb(theme.accent);// Background image was previously only wired up for the SVG preview and // PNG export, so the PDF you actually download was silently missing it // even though the preview showed it. Drawn first, full bleed, so the // logo and text stay layered on top of it. if (isPro && bgImageDataUrl) { const bgImg = await embedImgIfAny(pdfDoc, bgImageDataUrl); if (bgImg) page.drawImage(bgImg, { x: 0, y: 0, width: L.page.w, height: L.page.h, opacity: 0.08 }); }const logoImg = await embedImgIfAny(pdfDoc, logoDataUrl); if (logoImg) { let lx = L.logo.x; if (logoPosition === 'top-center' && theme.layout !== 'centered') lx = L.page.w/2 - L.logo.w/2; else if (logoPosition === 'top-right' && theme.layout !== 'centered') lx = L.page.w - L.margin - L.logo.w; page.drawImage(logoImg, { x: lx, y: L.logo.y, width: L.logo.w, height: L.logo.h }); }const drawAligned = (text, x, y, size, font_, color, centered) => { if (centered) { const w = font_.widthOfTextAtSize(text, size); page.drawText(text, { x: x - w/2, y: flip(y), size, font: font_, color }); } else page.drawText(text, { x, y: flip(y), size, font: font_, color }); }; drawAligned(truncate(f.company,40), L.companyName.x, L.companyName.y, 18, titleFont, textColor, L.companyName.centered); if (f.tagline) drawAligned(truncate(f.tagline,60), L.tagline.x, L.tagline.y, 9, bodyFont, accentColor, L.tagline.centered);if (dividerStyle !== 'none') { page.drawLine({ start:{x:L.contentX,y:flip(L.headerY)}, end:{x:L.contentX+L.contentW,y:flip(L.headerY)}, thickness:1.2, color: accentColor }); page.drawLine({ start:{x:L.contentX,y:flip(L.footerY+L.footerH)}, end:{x:L.contentX+L.contentW,y:flip(L.footerY+L.footerH)}, thickness:1.2, color: accentColor }); }if (isPro && watermarkEnabled) { const cx = L.page.w/2, cy = L.page.h/2; const wmText = f.watermark; const w = titleFont.widthOfTextAtSize(wmText, 48); page.drawText(wmText, { x: cx - w/2, y: flip(cy), size: 48, font: titleFont, color: textColor, opacity: 0.08, rotate: PDFLib.degrees(45) }); }if (isPro && sigEnabled) { const sigY = L.bodyBottom + 50; const sigImg = sigMode === 'upload' ? await embedImgIfAny(pdfDoc, sigImageDataUrl) : null; if (sigImg) page.drawImage(sigImg, { x: L.contentX, y: flip(sigY+36)-34, width: 130, height: 34 }); else if (sigMode === 'typed' && f.sigName) page.drawText(f.sigName.split(',')[0]||f.sigName, { x: L.contentX, y: flip(sigY+8), size: 20, font: bodyFont, color: textColor }); page.drawLine({ start:{x:L.contentX,y:flip(sigY)}, end:{x:L.contentX+160,y:flip(sigY)}, thickness:1, color: textColor }); if (f.sigName) page.drawText(f.sigName, { x: L.contentX, y: flip(sigY-14), size: 9, font: bodyFont, color: rgb(0.58,0.64,0.72) }); }if (isPro && tableEnabled && f.tableData) { const rows = parseTableData(f.tableData); if (rows.length) { const cols = Math.max(...rows.map(r => r.length)); const t = computeTableLayout(L.bodyTop, L.bodyBottom, L.contentX, L.contentW, rows.length, cols); if (t.fits) { rows.forEach((row, ri) => { const rowY = t.tableTop - ri*t.rowH; page.drawLine({ start:{x:L.contentX,y:flip(rowY)}, end:{x:L.contentX+L.contentW,y:flip(rowY)}, thickness:0.7, color: rgb(0.89,0.91,0.94) }); row.forEach((cell, ci) => { page.drawText(truncate(cell,24), { x: L.contentX+ci*t.colW+6, y: flip(rowY-t.rowH+15), size: 9.5, font: ri===0?boldFallback:bodyFont, color: textColor }); }); }); page.drawLine({ start:{x:L.contentX,y:flip(t.tableBottom)}, end:{x:L.contentX+L.contentW,y:flip(t.tableBottom)}, thickness:0.7, color: rgb(0.89,0.91,0.94) }); } } }page.drawText(truncate(f.address,80), { x: L.contentX, y: flip(L.addressY), size: 9, font: bodyFont, color: textColor, opacity: 0.8 }); const contactParts = [f.phone, f.email, f.website].filter(Boolean).join(' | '); page.drawText(truncate(contactParts,90), { x: L.contentX, y: flip(L.footerRowY), size: 9, font: bodyFont, color: textColor });const socialsForPdf = [['f',f.facebook],['@',f.instagram],['in',f.linkedin],['X',f.twitter]].filter(([,v]) => v); socialsForPdf.forEach(([label], i) => { const sx = L.contentX + 9 + i*24; page.drawCircle({ x: sx, y: flip(L.socialRowY), size: 9, color: accentColor }); const lw = bodyFont.widthOfTextAtSize(label, 7); page.drawText(label, { x: sx - lw/2, y: flip(L.socialRowY) - 2.5, size: 7, font: bodyFont, color: rgb(1,1,1) }); });if (logo2DataUrl && isPro) { const logo2Img = await embedImgIfAny(pdfDoc, logo2DataUrl); if (logo2Img) page.drawImage(logo2Img, { x: L.qr2X, y: L.qr2Y, width: L.qrSize, height: L.qrSize }); } else if (isPro && qr2Enabled) { drawQrPdf(page, f.qr2Data || f.website, L.qr2X, flip(L.qr2Y+L.qrSize), L.qrSize, textColor); } if (qrEnabled) drawQrPdf(page, f.qrData || f.website, L.qrX, flip(L.qrY+L.qrSize), L.qrSize, textColor);const bytes = await pdfDoc.save(); triggerDownload(new Blob([bytes], { type:'application/pdf' }), 'letterhead.pdf'); toast('PDF downloaded!'); } function drawQrPdf(page, text, x, y, size, color) { const { count, modules } = buildQrMatrix(text || 'https://example.com'); const cell = size / count; page.drawRectangle({ x, y, width: size, height: size, color: rgb(1,1,1) }); modules.forEach(([r,c]) => { page.drawRectangle({ x: x+c*cell, y: y+size-(r+1)*cell, width: cell+0.3, height: cell+0.3, color }); }); }// ── MODE ────────────────────────────────────────────────────── function setMode(mode) { isPro = mode === 'pro'; document.getElementById('btnSimple').classList.toggle('active', !isPro); document.getElementById('btnPro').classList.toggle('active', isPro); widget().classList.toggle('pro-mode', isPro); const pb = document.getElementById('proBar'); if (pb) pb.style.display = isPro ? 'flex' : 'none'; if (!isPro) { if (TEMPLATES[currentTemplate].pro) currentTemplate = 'navy-classic-left'; qr2Enabled = false; sigEnabled = false; watermarkEnabled = false; tableEnabled = false; document.getElementById('qr2Toggle').checked = false; document.getElementById('sigToggle').checked = false; document.getElementById('watermarkToggle').checked = false; document.getElementById('tableToggle').checked = false; } renderAllUI(); }// ── UTILS ───────────────────────────────────────────────────── function toast(msg) { const t = document.getElementById('toast'); t.textContent = msg; t.classList.add('show'); setTimeout(() => t.classList.remove('show'), 3200); }// ── INIT ────────────────────────────────────────────────────── renderLogoPositionRow(); renderAllUI(); pushHistory();// ── SIDEBAR SCROLL HINT ────────────────────────────────────── // Hides the "scroll for more" fade once the sidebar is actually scrolled // close to its bottom, so it never sits on top of the last card once // there's genuinely nothing further to reveal. (function initSideScrollHint(){ const panel = document.getElementById('sidePanel'); const hint = document.getElementById('sideScrollFade'); if (!panel || !hint) return; function updateHint(){ const atBottom = panel.scrollTop + panel.clientHeight >= panel.scrollHeight - 4; const needsScroll = panel.scrollHeight > panel.clientHeight + 4; hint.classList.toggle('hide', atBottom || !needsScroll); } panel.addEventListener('scroll', updateHint); window.addEventListener('resize', updateHint); updateHint(); })();

How to Use the Letterhead Generator

From a blank page to a print-ready letterhead in minutes. Fully usable on mobile.

1
Pick a Layout
Classic Left is free. Unlock 15 more templates in Pro.
2
Add Your Details
Company name, logo, contact info, QR code, and social handles.
3
Adjust Colors & Fonts
Pick an accent color, text color, and font from the Design card.
4
Download or Print
Export PDF or PNG free, or unlock SVG and 300 DPI in Pro.

Every letterhead is built inside your own browser. No account, no tracking, nothing ever uploaded.

Specifications
Price Free
Data Handling Never leaves your browser
Templates 16 (4 layouts × 4 color families)
Page Sizes A4 · US Letter
Export Formats PDF · PNG · SVG · Print
Platform Optimized for Web & Mobile
Found a bug or something not working right? Let us know and we'll fix it. Every report helps make this tool better.
Report an Issue

Letterhead Generator, Free and Online

A letterhead generator builds professional business stationery, your company name, logo, and contact details, formatted correctly and ready to attach to any letter, invoice, or proposal you send. This one includes 16 templates across four color families and four layouts, a QR code, social icons, and exports to PDF, PNG, print, and, in Pro mode, a digital signature, watermark, custom fonts, and 300 DPI export.

Most people only think about their letterhead the moment they need one, sending an official letter, a formal proposal, an invoice to a new client, and discover that Word's built in templates look dated or that a hastily made version undercuts everything else about how the business presents itself. This letterhead generator is built to close that gap quickly. Pick a layout, drop in your logo, fill in your contact details, and the tool lays everything out correctly, leaving the right amount of blank space in the middle for the actual letter to go. A live preview updates as you type, so what you see is exactly what downloads. Pro mode adds a second logo for the footer, a second QR code, a typed or uploaded signature block, a watermark for drafts, a background image, and a small table for line items, useful for anything that blends a letter with an informal invoice.

What Every Letterhead Actually Needs
Company Name + Logo + A Way to Reach You

Everything past those three is optional polish, a tagline, a QR code, social handles. Get those three right first and the rest is decoration, not substance.

1Simple vs Pro, What Each Mode Includes

FeatureSimple ModePro Mode (Free)
1 template, logo, contact details, QR code, social iconsIncludedIncluded
PDF, PNG, and Print exportIncludedIncluded
All 16 templates, custom colors and fontsNot includedIncluded
Digital signature, watermark, background imageNot includedIncluded
Second logo, second QR code, body tableNot includedIncluded
300 DPI PNG and SVG exportNot includedIncluded

2Layout Styles, Quick Reference

Classic Left
Logo and name at top left
Centered
Symmetrical, formal tone
Split Bar
Contact info aligned right
Minimal Line
Just a rule under the header

The mistake that undercuts most self made letterheads isn't a bad logo or an ugly font, it's leaving too little breathing room for the actual letter. A letterhead's job is to frame a document, not fill it, so a header and footer that together eat more than a fifth of the page start to feel cramped once real paragraphs go in between them. Every template here reserves that space on purpose, the body area is calculated from the page size, not guessed at.

3Where the Modern Letterhead Actually Came From

The letterhead as we know it, a printed header with a company's identity sitting above blank space for a letter, is younger than most business customs. Its direct ancestor is the billhead, a printed slip from the 17th and 18th centuries whose main job was to open with the words "bought of" followed by an itemized bill. According to design historian David Jury's research into early business stationery, it was only from around 1820 that tradesmen began wanting genuinely all purpose stationery, paper that could serve as a letter as well as an invoice or a statement, rather than separate printed forms for each. The billhead gradually shed its "bought of" opening and became a letterhead in its own right, a shift that finished taking hold once mid-19th century postal reform changed mailing costs from being based on the number of sheets sent to the weight of the envelope, making regular business correspondence on dedicated stationery affordable for the first time. What started as an itemized bill slip is, two centuries later, the header sitting at the top of this tool's own preview pane.

QuestionQuick Answer
What did the letterhead evolve from?The billhead, a printed invoice slip
When did all purpose stationery emerge?From around 1820
What finished the shift to letterheads?Mid-19th century postal reform based on weight, not sheet count
What phrase did billheads originally open with?"Bought of"
Privacy Note

Every letterhead is built entirely inside your own browser using JavaScript, your logo and details are never uploaded or sent to a server, and no account or signup is required.

4Frequently Asked Questions

How do I make a letterhead online for free?
Pick a layout, add your company name, logo, and contact details, then download it as a PDF or PNG. This tool builds the whole thing in your browser, one of its 16 templates is free, and you can export a print-ready PDF at no cost.
What should a business letterhead include?
At minimum, your company name, logo, and a way to reach you, phone, email, or website. Most letterheads also include a mailing address. Beyond that, a tagline, social media handles, or a QR code are common additions, but the core four rarely change.
What file format should I use for a printed letterhead?
PDF for anything going to a printer, since it preserves fonts and layout exactly regardless of the device opening it. PNG works for digital use, like attaching a letterhead image to an email template. This tool exports both, plus a 300 DPI PNG and SVG in Pro mode for higher resolution printing or further editing.
Can I add a digital signature to a letterhead?
Yes, in Pro mode. You can type a name in a script font or upload an image of an actual signature, and it will appear in the signature block at the bottom of the letterhead.
What size should a letterhead be, A4 or Letter?
Use A4 if your business operates in a country that follows ISO paper standards, most of the world outside North America. Use Letter size in the United States, Canada, and a few other countries that still use that standard. This tool supports both.
Is my logo and business information private when I use this tool?
Yes. Every letterhead is built entirely inside your own browser using JavaScript, your logo and details are never uploaded or sent to a server, and no account or signup is required.

Grounded in design historian David Jury's own research into early business stationery, not a generic history claim with no source. The full essay is available at davidjury.com. For how consistent branding builds recipient trust, see Wix's design guide. For related tools on this site, see the Business Card Generator and the full SmallStudyTools.com tool library.

Lilly
Here to help you find a tool
Search tools Search blogs
Try me to find a tool! 👋