Sermons on your site.
A random sermon from the library, with the preacher and a player, on any page that will take a line of HTML. No key, no account, nothing to maintain — and a different sermon every visit.
Put a sermon on your page. One line of HTML, no account, no key, nothing to maintain. It picks a different sermon from the SermonIndex library on every load, shows the preacher, and plays the audio without sending your visitors anywhere else.
See it
The default
One sermon, portrait, summary, player, and a button for another.
Dark, three at a time
Set count and it becomes a shelf.
Sermon of the day
Same sermon for every visitor, all day, changing at midnight UTC.
On one theme
Filter by topic, preacher, or book of the Bible.
Compact
Turn off the portrait, summary and tags for a sidebar.
Your colour
One accent value ties it to your own design.
Why put this on your site
One small request, cached at the edge. The widget adds no framework, no jQuery, no tracker and no cookie. It will not slow your page down.
Sermons with audio to draw from, by preachers your readers already trust — Ravenhill, Tozer, Washer, Spurgeon in print, and hundreds more.
Things to maintain. No key to rotate, no quota to watch, no account that can lapse. If we vanished tomorrow the worst that happens is an empty box.
Fresh content on a page you never update again. A different sermon every visit gives people a reason to come back.
Put it on your page
Pick whichever of these suits the site you have. They all produce the same widget.
1. The one-liner
Paste this where you want the sermon to appear. The widget renders itself right there.
2. Into a box you control
Better when your layout wants the script in the footer and the widget somewhere else.
3. As an HTML tag
Load the script once, then use the element as many times as you like.
4. An iframe, for sites that strip scripts
Wix, Squarespace, WordPress.com and most church platforms will not run a third-party script but will allow an iframe. Options go on the query string.
Sizing an iframe. The frame posts its height to the parent whenever it changes, so you can size it exactly if you want to. Everything still works if you ignore this and set a fixed height.
5. Just the data
If you would rather draw it yourself, take the sermon and render your own markup. This is the same call the widget makes.
Or skip the widget altogether and read the endpoint directly — it is a static JSON file like everything else in the API.
Options
Every option works in all five methods. As data- attributes on a
script tag or element, as attributes on <sermon-index>, as
query parameters on the iframe, or as keys in the JavaScript call.
| Option | Default | What it does |
|---|---|---|
theme | auto | light, dark, or auto to follow the visitor's system setting. |
accent | #d4af37 | Any CSS colour. Used for the play button, portrait ring and links. |
count | 1 | How many sermons to show, up to 10. |
width | full width | A number of pixels, or any CSS width. The widget never exceeds its container. |
heading | Free Audio Sermons | The title bar text. Set it to empty to remove the bar entirely. |
rotate | load | load for a new sermon every page view, daily for one that holds all day. |
interval | 0 | Seconds between automatic changes. Never interrupts someone who is listening. |
topic | — | A topic slug, e.g. revival. See the topic list. |
speaker | — | A preacher slug, e.g. leonard-ravenhill. |
book | — | An OSIS book code, e.g. ROM. See Book Codes. |
player | true | Set false for a link-only card with no audio controls. |
portrait | true | Show the preacher's photograph. |
summary | true | Show the one-line summary. |
tags | true | Show the scripture reference and topic chips. |
shuffle | true | Show the button that fetches another sermon. |
target | _blank | Where links open. Use _self to keep people on your page. |
A filter that matches nothing still shows a sermon. If you ask for a topic with very few audio sermons the widget searches a few more shards, and if it still comes up empty it drops the filter rather than showing your visitors an empty box.
How it works, briefly
The widget fetches one small file — about 9 KB over the wire — holding fifty ready-to-render sermons, and picks from it. That is the whole network cost. Pressing Another costs nothing further, and a second widget on the same page reuses the first one's data. The file is static and cached at the edge, so it is fast everywhere and it cannot fall over under load.
Audio plays from the Internet Archive mirror where one exists, falling back to our own CDN if Archive is slow to answer. Nothing is preloaded until someone presses play, so an unplayed widget costs your visitor no bandwidth at all. Only one sermon plays at a time, even across several widgets.
The whole thing lives inside a shadow root, which means your CSS cannot break it and it cannot leak into your CSS. It sets no cookies, stores nothing beyond a per-tab cache of that one file, and reports nothing back to us.
Making it your own
The script is plain JavaScript with no build step and no dependencies. Read it, take it, host it
yourself if you would rather not depend on our CDN — it is
right here. The only
thing it needs from us is the /v2/random/ endpoint, and that is
open to anyone.
If you build something with it we would like to see it. Write to sermonindex@gmail.com.
For Personal and Ministry Use
All materials on SermonIndex are freely available for personal edification and for the work of discipleship and evangelism. These messages may be shared with others, played in churches, homes, Bible studies, and ministry gatherings, and used in teaching and other ministry settings. Online sharing or translation into other languages may also be undertaken where it serves the purpose of personal ministry, missionary outreach, or the edification of believers, and is done in a careful and respectful manner that honors the original message.
Our desire is that these messages remain freely given and not used for commercial gain, in keeping with the words of our Lord: Freely you have received; freely give (Matthew 10:8). It brings us great joy whenever these sermons are used to encourage believers, strengthen the Church, and lead many into a deeper devotion to Jesus Christ.
Guarding Against Commercial Use
While these materials are freely available for ministry purposes, they are not intended to be bought or sold for commercial gain.
The sermons and recordings hosted on SermonIndex represent the lives and ministries of many faithful servants of God. We desire to honor both their legacy and the sacred message they preached by ensuring these materials remain freely available to all.
For this reason, we ask that the materials not be packaged, sold, or used in commercial products or profit-driven ventures. Our hope is that the messages entrusted to us will always remain freely accessible to the Body of Christ, without financial barriers.
Attribution to SermonIndex.net in some way, to safeguard these principles, is strongly encouraged.
Not sure whether your use fits? Write to us at sermonindex@gmail.com — you are always free to reach out, and we would far rather talk it through than have anyone guess. The full terms are on the copying permissions page.
Built on the SermonIndex API — the same public endpoints anyone can use.
