Free, open-source worship presentation software for churches
Support this project — OpenWorship is free and open-source. If it has blessed your ministry, consider supporting continued development.
| Dual-Window System | Control from your laptop while displaying on the projector. Real-time preview shows exactly what your congregation sees. |
| Songs & Smart Library | Build your permanent song collection. Search, organize, and drag songs into any session instantly. |
| Bible Verses | Display Scripture with built-in translations (KJV, ASV, and more). Search by book, chapter, and verse. |
| Notes & Announcements | Add custom text slides or overlay banners for announcements, liturgy, or any freeform content. |
| OCR Import | Extract lyrics from images and PDFs automatically using AI. No more manual typing from song sheets. |
| Video & Image Backgrounds | Beautiful motion backgrounds and custom images. Adjustable dimming for readability. |
| Custom Frames | Add decorative borders to your slides — image-based (9-slice) or CSS-styled with radius, shadow, and color. |
| Advertisements | Display text or image ads as fullscreen slides or banner overlays with auto-rotation. |
| Import / Export | Share songs, sessions, or your entire library as .oworship files with smart conflict resolution. |
| Custom Typography | Import any font. Fine-tune size, color, shadow, outline, and per-content-type styling. |
| Slide Animations | Smooth transitions between slides — fade, slide up, or slide left. |
| Keyboard Shortcuts | Full keyboard control — navigate slides, jump sections, blank screen, undo/redo, and more. |
| Multilingual | English and Korean interface with full i18n support. |
1. Create a Session → Your setlist for the service
2. Add Content → Songs, Bible verses, or announcements
3. Open Projection → Display on your projector/screen
4. Use arrow keys → Navigate through slides
| Platform | File |
|---|---|
| macOS | .dmg |
| Windows | .exe |
| Linux | .AppImage |
Build from source
git clone https://github.com/jaycho1214/openworship.git
cd openworship
npm install
npm startA session is your worship setlist. Create one for each service.
| Action | How |
|---|---|
| Create session | Click "New Session" in header |
| Switch session | Use dropdown in header |
| Rename session | Right-click session name |
| Delete session | Right-click → Delete |
Sessions save automatically.
Click "+ Add" to insert content into your session. Three content types are supported:
Songs
- Enter title and lyrics (or search the library)
- Separate slides with blank lines:
First verse line one
First verse line two
Second verse line one
Second verse line two
- Use section markers like
[Verse],[Chorus],[Bridge]for quick navigation
Bible Verses
- Select a translation (KJV, ASV, BBE, and more available to download)
- Pick book, chapter, and verse range
- Choose display mode — one verse per slide or full range on one slide
Notes / Announcements
- Enter custom text for announcements, liturgy, or readings
- Choose to display as full slides or as an overlay banner (top or bottom)
From Library
- Open library sidebar (left edge)
- Search for songs
- Drag into your session
OCR Import
- Click "+ Add" → "Image Import"
- Drop images or PDFs — AI extracts the lyrics
- Review, edit, save
Requires OpenAI API key in Settings → API
Import from File
- Click "+ Add" → "Import"
- Select a
.oworshipfile - Preview contents and choose how to handle duplicates (skip, overwrite, or create copy)
| Key | Action |
|---|---|
Space or → |
Next slide |
← |
Previous slide |
↓ |
Next song / item |
↑ |
Previous song / item |
Tab |
Next section |
Shift+Tab |
Previous section |
Home |
First slide |
End |
Last slide |
1 – 9 |
Jump to section (or slide) |
B |
Toggle blank screen |
V |
Toggle verse indicator |
. or Esc |
Toggle blank |
Cmd/Ctrl+Z |
Undo |
Cmd/Ctrl+Shift+Z |
Redo |
Fonts — Settings → Appearance. Supports .ttf .otf .woff .woff2
Video & Image Backgrounds — Settings → Display. Videos (.mp4 .webm .mov) and images (.png .jpg .gif .webp). Adjustable background dimming.
Text Styling — Per-content-type settings for font size, color, shadow, outline, alignment, padding, and line gap. Bible verses have separate reference text styling.
Frames — Settings → Frames. Add decorative borders using 9-slice images or CSS styles (border, radius, shadow, background). Assign different frames per content type.
Slide Animations — Settings → Display. Choose from none, fade, slide up, or slide left transitions.
Theme — Settings → Appearance. Light, dark, or system theme.
Preparing for Sunday
- Create session early in the week
- Add songs, Bible readings, and announcements in order
- Review slide breaks
- Test on actual display
- Ready before service starts
Optimal Slides
- 2-4 lines per slide
- Match natural song phrases
- Avoid single-line slides (too fast)
- Avoid 6+ lines (too crowded)
- Use section markers (
[Verse],[Chorus]) for quick navigation during worship
Multi-Monitor Setup
- Connect projector as extended display
- Open OpenWorship on main monitor
- Click "Open Projection"
- Projection goes to secondary display
- Control from main, display on projector
Sharing Content
- Export individual songs, entire sessions, or your full library as
.oworshipfiles - Share with other worship teams or back up your collection
- Import with conflict resolution — skip, overwrite, or create copies
| Command | Description |
|---|---|
npm start |
Development mode |
npm run build |
Production build |
npm run package |
Create installer |
npm run lint |
Lint code |
npm test |
Run tests |
Architecture
src/
├── main/ # Electron main process
│ ├── ipc/ # IPC handlers (songs, sessions, bible, frames, etc.)
│ └── services/ # Database, media, export, bible, advertisements
├── renderer/
│ ├── control/ # Control window (editor, library, settings)
│ ├── projection/ # Projection window (fullscreen lyrics display)
│ └── shared/ # i18n, utilities, shared components
└── shared/ # TypeScript types shared across processes
Tech Stack — Electron 35 · React 19 · TypeScript 5.8 · Tailwind CSS 4 · shadcn/ui · better-sqlite3 · OpenAI API
Contributions welcome! Fork, create a feature branch, and submit a Pull Request.
MIT License — free to use for your church or ministry.
"Let everything that has breath praise the Lord."
Psalm 150:6
Made with faith for churches worldwide
