I've received notification that the Google Tenor API will be sunset 30 June 2026.
As of today, new API keys for the Tenor API will no longer be allowed (great, lots of notice Google thanks!)
As of 30 June the API will stop working.
Accordingly this means the tenor gif plugin will no longer work after 30 June 2026.
This is one of my plugins, and is used here, although not by many people.
https://github.com/julianlam/nodebb-plugin-tenor-gif
If you use this plugin and wish to see it updated, let me know and I will look into alternatives... if the API is being sunset, then it will likely be a new GIF service.
Hello
first apology if this is a well-known concern; I searched for 'pinned' on https://docs.nodebb.org and found only a dev oriented topic.
I tried also a search on this forum and did not see a post that seemed to match my question.
I use frequently a nodebb forum and did not see anything in the settings that could be related.
but back to the real question: many forum admin feel that their duty is to warn new users of bad things they can do.
It leads to a deluge of pinned posts.
For new users this can be seen as a good thing.
When you use a forum every day it gets old to see all the time the same warnings that you already know. The first page of any category is almost full of pinned posts.
So is there a way to mark a pinned post as 'do not display unless I do a special magic' to allow experienced users to skip the pinned posts (while still seeing the new pinned posts)
Thanks for your wisdom !
Hi everyone, I want to add some new features to my forum's chat system:
1.Is there a way to let users send voice messages? I'd like to know if there are any plugins or settings for this.
2.I want to add a "Chat" button to every user card in the User List page. When clicked, it should open a private chat window. How can I implement this correctly?
Currently, the buttons I tried to add are unresponsive. Looking for some guidance. Thanks!
nodeBB version: v4.5.0
Hi everyone.
As you know, ActivityPub's 'All Known Topics' comes from /recent?cid=-1 and I wanted to make that accessible as either a category or a sub-category.
So I added a "Remote Category", with the Category ID of -1 for the aforementioned. Bad idea!
The category was added fine, it shows up as 'Uncategorized', but I can't move up or down the Category list, place it as a sub-forum of another category, or even make any changes to the category (changing icon, topics per page)
If I try to change the 'Set Order' to 99, it throws up an error
Error
Category does not exist
Which I understand because of the Category ID of -1
So I decided to 'Purge category' - Thinking that the 'Remote Category' acted like a symlink in Linux.
It didn't delete the category itself, but it did delete any topics that were from the Fediverse (that's fine)
But it did remove all Privileges from the category.
Disabling the category doesn't remove the category from the Categories list either (Which I suspect is because of the error above)
But now I am stuck with this category.
I was able to remove 'View' privileges from the category for non-admin users, but I can still see it.
Now, my issue is that I can't move it or hide it myself.
Is anyone able to help on how to fix this?
I did find I was able to add a directory link in the 'Navigation' bar, which works perfectly, and non-admin users can still view the topics via the Navigation.
Thanks in advance
[Plugin] Global Chat Search - Search across all your conversations
Standard NodeBB chat search is great for searching within a specific room, but what if you need to find that one message and you can't remember which chat it was in?
NodeBB Chat Search adds a global search bar to your chat sidebar, allowing you to search through every conversation you've ever been a part of.
Features
Global Context: Searches across all room IDs associated with your UID.
Performance Focused: Fetches messages in batches of 50 to ensure the server remains responsive during deep searches.
Sticky UI: Your search query and results persist even when you navigate between different chat rooms.
Smart Navigation: Clicking a result takes you directly to that message and highlights it with a smooth scroll and background transition.
Rich Previews: Displays room names, sender avatars, and timestamps using the native NodeBB look and feel.
Technical Details
Hooks Used: static:app.load for server initialization and filter:scripts.client for injecting the search interface.
DOM Management: Uses a MutationObserver to ensure the search bar is injected correctly regardless of how the chat page is loaded.
State Management: Implements window.chatSearchState to prevent losing search results during Ajaxify transitions.
Compatibility: Built for NodeBB ^3.0.0.
Installation
npm install nodebb-plugin-chat-search
Install the plugin via the terminal.
Activate it in the Administrator Control Panel (ACP).
Rebuild and Restart your NodeBB instance.
Links
GitHub: https://github.com/palmoni5/nodebb-plugin-chat-search
Issues: Report a bug
Feel free to leave feedback or feature requests below!
I use computers that only have USB-C ports and then others than only have USB-A ports. It makes it rather difficult to use a single YubiKey and access from either desktop.
My suggestion/request is to allow more than one hardware key for an account. The other main scripts I use allow this (Xenforo and Discourse).
[Plugin] Super Admin Chat Control - Monitor and Manage All Conversations
Hi everyone,
I've developed a new plugin called Super Admin Chat Control. This plugin is designed for forum administrators who need deeper oversight into the messaging system for moderation purposes.
It allows administrators to view, manage, and interact with any chat room on the forum, even if they aren't a participant.
Key Features:
Global Access: View any private or group conversation directly.
Moderation Power: Administrators can edit or delete any message within the chat system.
Quick Audit: Adds a "View Chats" link to the user profile menu for admins.
Smart Presence: Admins can view room history without being permanently added as members, keeping room statistics accurate.
Bilingual UI: Full support for English and Hebrew interfaces.
How it works:
The plugin hooks into NodeBB's messaging system to elevate admin permissions. It overrides core functions like Messaging.canEdit, Messaging.canDelete, and Messaging.canViewMessage to ensure administrators have the necessary access for effective moderation.
Technical Details:
Compatibility: NodeBB ^3.0.0 or ^4.0.0.
Hooks used: filter:messaging.isRoomOwner, filter:messaging.canReply, filter:messaging.loadRoom, and more.
Installation:
Install the plugin via your terminal:
npm install nodebb-plugin-admin-chats
Activate the plugin in the NodeBB Admin Control Panel (ACP).
Restart NodeBB.
Repo & Issues:
You can find the source code here: https://github.com/palmoni5/nodebb-plugin-admin-chats
Feel free to leave feedback or report issues on GitHub!
This NodeBB plugin uses the Google Static Map API to convert the location string of a user to a map on the users profile page. Just enter a valid location string.
Installation
npm install nodebb-plugin-location-to-map
Get an API key from https://console.cloud.google.com/ and enable Maps Static API.
Put your API key in the admin page of this plugin and save.
Screenshot
[image: maps.gif]
More info
https://github.com/barisusakli/nodebb-plugin-location-to-map
This is a general query to the base of experience that frequents the community forum, that might also be of benefit to others.
How do you handle multi-domain email operations?
I was wondering if anyone had any tips or tricks for handling multi-site email demands, functional and operational handling, where it mainly info@ contact@ we're not talking running many if any user inboxes, general form collection and things like that, a structured way that is clean, streamlined and cost efficient that scales nicely.
Maybe some run their own email server.
Me, well my exp. says use maligun (or similar) as best option. Though I haven't deployed that for more than one instance.
I was wondering if a CRM might actually work too, but I'm not sure how they would manage multi-domain, maybe it would need to be setup in a chain of delivery, like: mailgun > universal inbox > CRM
@Julian @baris What the story with email > nodeBB - that appears as a post?
That's essentially CRM functionality. Maybe there is a plugin?
Hi.
After almost two years, I'm returning to developing a plugin for RPG sessions. Now I have to do it because the forum finally migrated from vBulletin to NodeBB, and there was a plugin like this...
Getting to the point, I'll first outline my use case.
I'm creating an "RPG Session" object in the database that has several topics pinned to it. Underneath, each topic is in a subcategory corresponding to its genre (gameplay, commentary, session materials). The main category is empty.
I want to have a separate thread view in the main category view for my own control - there will be RPG sessions in the list whose links will take me to the separate RPG view. The separate RPG view isn't that big of a deal since it's a new route and I'm simply basing it on the category view. Everything's fine.
I'm wondering what the best way to create this protected view (only for some users) of the category view is. I see two options: either overwrite the entire tpl based on what NodeBB provides, or replace the jQuery stuff on the front-end.
The first option seems more efficient but creates maintenance issues; every NodeBB release, I'd have to merge the tpl with the new one (as I'd be basing it on that). Regardless, I'm leaning towards the first option.
If anyone sees another, better solution that I'm missing, I'd appreciate your feedback.
Hi.
Default setting for max characters in post are 32767. It is max signed 16-bits number. That's why I felt concerned. Can I safely increase this value (I wanted to increase it twice) without risking errors or any performance issues? The default value suggests too much about some internal implementation details.
I’m trying to customize the look of my NodeBB forum and want to make sure I follow best practices. I’d like to adjust colors, fonts, and the header layout without breaking future updates. Do you usually work with child themes, custom CSS, or modify the default theme directly? Any tips on keeping changes maintainable after updates would be really helpful.
Copyright © 2026 NodeBB | Contributors


