Design, view and print reports in the browser.
FreeReport is a reporting tool built on web standards. Reports are designed in a web designer and saved as JSON; people view them page by page, print them exactly as shown, and save them as PDF or Excel. Nothing to install — no plugins, no ActiveX, no print module. Free for personal use; companies license it per domain.
A live viewer. Change the parameters, page through, print, or save as PDF or Excel. The sample documents are Korean forms.
What is included
Every feature is in every copy. Each item links to a demo or the docs.
How it differs
Typical Korean reporting tools compared with FreeReport.
| Typical reporting tools | FreeReport | |
|---|---|---|
| Install | Often a print module or viewer on each PC | Nothing to install; runs on web standards |
| Designer | Desktop program (Windows) | In the browser |
| Report format | Proprietary file | JSON |
| PDF and Excel | Usually server-side | In the browser |
| Price | Not published; quoted per project | KRW 500,000 per domain per year (personal: free) |
Product-by-product comparison: OZ Report, ClipReport, UbiReport, Crystal Reports, ActiveReportsJS →
Start in a few lines
Install the package, give the viewer a container with a height, pass a report definition and data.
import { createViewer, createReport } from '@freereportjs/core';
import '@freereportjs/core/styles.css';
// a report definition is plain JSON (made in the designer or by hand)
const definition = await fetch('/reports/sales.json').then(r => r.json());
const viewer = createViewer(document.getElementById('viewer'), {
definition,
data: { rows }, // detail rows plus any other values
params: { from: '2026-07-01' },
lang: 'en',
onOutput: e => log(e), // every print and export; return false to cancel
});
// without a viewer: straight to PDF or Excel
const report = createReport(definition, { rows });
await report.ready();
const pdf = await report.toPdf(); // Blob
const xlsx = await report.toXlsx('form');import { useEffect, useRef } from 'react';
import { createViewer } from '@freereportjs/core';
import '@freereportjs/core/styles.css';
// or use the ready-made component: import { FreeReportViewer } from '@freereportjs/react'
export function ReportViewer({ definition, data }) {
const el = useRef(null);
useEffect(() => {
const viewer = createViewer(el.current, { definition, data, lang: 'en' });
return () => viewer.destroy();
}, [definition, data]);
return <div ref={el} style={{ height: 720 }} />;
}<script setup>
import { onMounted, onBeforeUnmount, ref } from 'vue';
import { createViewer } from '@freereportjs/core';
import '@freereportjs/core/styles.css';
// or use the ready-made component: import { FreeReportViewer } from '@freereportjs/vue'
const props = defineProps(['definition', 'data']);
const el = ref(null);
let viewer;
onMounted(() => { viewer = createViewer(el.value, { ...props, lang: 'en' }); });
onBeforeUnmount(() => viewer?.destroy());
</script>
<template>
<div ref="el" style="height: 720px" />
</template>Questions people ask
What is FreeReport?
FreeReport is a web reporting tool: a report designer, a paged viewer, printing, PDF, Excel and CSV export in one JavaScript package. Reports are JSON definitions made of bands (title, page header, groups, detail, summary, page footer). It is made in Korea for Korean business documents and is an alternative to OZ Report, ClipReport, UbiReport and Crystal Reports.
Does anything need to be installed?
No. The designer, viewer, printing and exports run in the browser on web standards. There is no plugin, ActiveX or print module. An optional, signed Windows program prints silently to a chosen printer for counters and offices that need it.
Is the Korean text in PDFs searchable?
Yes. The PDF embeds a subset of the TrueType font (Nanum Gothic by default, or your own font), so Korean text can be searched and copied, and it looks the same on every computer.
How much does it cost?
Personal, educational, research and non-commercial use is free. Companies pay KRW 500,000 per domain per year, or KRW 900,000 per domain once (perpetual, with one year of updates). VAT separate. There is no limit on developers, users or outputs.
Can it handle large reports?
Yes. 100,000 rows are laid out into thousands of pages, and the viewer draws pages only when they scroll into view. See the 100,000 rows demo.
Can I convert forms from another reporting tool?
There is no automatic converter yet. Forms are rebuilt in the designer or written as JSON; most Korean forms (quotes, statements, certificates) take a few hours.
Does it work with React, Vue and eGovFrame?
Yes. The core package works in any framework (see the code below), and @freereportjs/react, /vue, /svelte and /angular provide FreeReportViewer and FreeReportDesigner components. An integration sample shows FreeReport in an eGovFrame (Spring + JSP) project.