Open-source project
UniversalMediaServer/UniversalMediaServer avatar
UniversalMediaServer/UniversalMediaServer

Universal Media Server: a DLNA server whose install path lives off the repository

A DLNA, UPnP and HTTP(S) Media Server.

2,671 stars527 forksJavaGPL-2.0

At a glance

What is it?
The repository carries the Java server, an Eclipse-formatted source tree, a React client and a macOS launcher, while its README carries no install command and no configuration example. What the page does spell out is the protocol set, the seven external tools that do the format work, and a five-person maintainer list.
Who is it for?
Universal Media Server fits one shape of use: someone who wants DLNA and UPnP served from a Java server that hands format work to FFmpeg, MediaInfo and the rest, and who is content to take the binary from the project's website rather than from the repository.
Can I use it commercially?
Yes, with conditions. GPL-2.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
Is it still maintained?
Yes. The repository received new commits within the last day.
What is it written in?
Mainly Java, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on November 14, 2026, and from our analysis. They are not legal advice.

From daily snapshots

Star history

  • UniversalMediaServer/UniversalMediaServer2,671 ★ · +16
Star history
Repository2026-10-042026-11-14
UniversalMediaServer/UniversalMediaServer2.7k2.7k

16 Stars in the last 41 days, measured from the daily GitHub snapshot. Compare with other projects

Editorial analysis

DLNA, UPnP and HTTP/S is still the whole one-line description

The project states its purpose in a single sentence: Universal Media Server is a DLNA, UPnP and HTTP/S Media Server. That sentence is where the feature story starts and stops, and it is worth reading closely, because the page writes HTTP/S while the repository's own short description writes HTTP(S). It names three protocols and nothing else: no port, no discovery detail, no client profile, no configuration surface.

The next sentence gives the lineage. The software was originally based on PS3 Media Server by shagrath, and the fork was made, in the wording of the page, to ensure greater stability and file-compatibility. The primary language is Java and the root of the tree carries pom.xml, with versions said to exist for Windows, Linux and macOS. The claim made about formats is that the program streams or transcodes many different media formats with little or no configuration.

The numbers around that repository are worth reading next to the maintainer list further down the same page. There are 2653 stars, 530 forks and 404 open issues, and no topics are set at all. A protocol-first server with a Maven build, three desktop platforms, a version line in the teens and a separate web client is not a small thing, so the missing topics say nothing about the code and rather a lot about how you would go about finding it.

Seven external tools do the format work, three of them unlinked

Universal Media Server does its format work through other people's programs, and the page names seven of them in one sentence: FFmpeg, MediaInfo, Crowdin, MEncoder, tsMuxeR, AviSynth and VLC, followed by and more. Four of those carry a reference link, FFmpeg to ffmpeg.org, MediaInfo to mediaarea.net, MEncoder to a plain http address at mplayerhq.hu, and Crowdin to crowdin.com. tsMuxeR, AviSynth and VLC are named without a link, and the trailing and more means the effective list cannot be pinned down from this page at all.

One entry in that sentence is not a media tool. Crowdin is a translation platform, and it is credited in the same breath as the encoders, which tells you something about how the project is organised: translation is treated as part of the stack rather than as a side errand, and the badge row at the top of the page points at that same Crowdin project.

The engineering consequence follows from that delegation. When a file will not play, the question that matters is not which container the server dislikes but which of the delegated tools handled it, at what version, and whether that was the build shipped with the release. The promise on the page is transcoding with little or no configuration; the tool list is the honest boundary of that promise, and the page does not draw it.

The README has no install command, and the tree holds the setup files

There is not a single fenced command block anywhere in this README. The only command-shaped string on the page is the branch step inside the contributing walkthrough, git checkout -b feature-name, which tells a contributor how to isolate a change and tells a user nothing about obtaining or starting the server. There is no clone URL, no package manager line, no service definition, no port number.

The repository does carry documents that hold the answers the page declines to give. INSTALL.txt sits at the root next to BUILD.md for the build and RELEASE.md for the release process. pom.xml is the Maven descriptor, runtestserver.sh is a shell script for standing up a test instance, and UMS.launch is an Eclipse launch configuration. A contributor gets a tree that can be built and run; a user gets a page that ends at a link.

Worse, the page gives two different answers about where a download lives. The badge row points at the latest release on GitHub, while the Links section points at universalmediaserver.com/downloads. Neither is a command you can paste. Treat cloning this repository as the contributor path rather than the install path, and read INSTALL.txt before assuming the page told you anything.

GPL-2.0 in the metadata, plain GPL in the prose, a link to a missing file

The license is stated three ways and only one of them is precise. Repository license metadata says GPL-2.0. The License section of the README says the project is released under the GNU General Public License, with no version number at all. That same section then sends you to a file called LICENSE, while the file actually present in the tree is LICENSE.txt, which is what the badge at the top of the page links to.

These are small inconsistencies, but they are the kind that costs someone an afternoon. A reader who follows the in-page link and finds nothing has to work out which of the two names is real. A reader looking for the terms can read the prose carefully and still not learn which version they agreed to. If compliance matters to you, open LICENSE.txt at the repository root and read the version there rather than trusting either the prose or the link.

The same page shows the same split in where a release lives, badge row and Links block pointing at two different download destinations. For a project with 530 forks and five named maintainers, that duplication is worth noticing: the canonical download is not stated once, it is stated twice, differently.

Five named maintainers, and every support surface outside the repository

The Current Project Members block names exactly five people: ik666, mik_s, SubJunk, SurfaceS and valib. Each of those names resolves to a forum profile of the form memberlist.php?mode=viewprofile&u=NNN rather than to a GitHub account, while the translation credits point somewhere else entirely, with github.com/josepma, github.com/ler0y, github.com/AlfredoRamos, github.com/js-kyle, github.com/K4r0lSz, github.com/prescott66, github.com/squadjot and a Crowdin profile for OnarEngincan. The project's public face runs through its own forum; GitHub holds the code and the issues.

The thank-you lists underneath read as an archive rather than a roster: fifteen names under major code contributions, four under documentation and community work, ten under frequent language translations. Two names, boblinds and snoots, are credited specifically for the network test cases, which is the only hint on the page about how protocol behaviour gets exercised at all.

Support sits outside the repository as much as inside it: the forum, a knowledge base at support.universalmediaserver.com, a downloads page on the website, and a third-party uptime monitor at stats.uptimerobot.com. With 404 issues open and the tracker link opening directly on state=open, the issue queue is a working channel, not an archive.

15.8.0 to 15.8.2 in seven weeks, and a push on 24 September 2026

The release record is short and regular. 15.8.0 was published on 20 July 2026, 15.8.1 on 23 August, and 15.8.2 on 9 September, with the default branch pushed on 24 September 2026. Two patch releases inside seven weeks, on a version line that has not broken its minor component, carrying no v prefix and nothing resembling a semver major.

That cadence lines up with the one stated motivation in the project, which is that the fork away from PS3 Media Server was made to ensure greater stability and file-compatibility. Whatever else the page withholds, it does tell you that this branch spends its releases on fixes rather than on line breaks, and that 15, 8 and a patch counter are the entire versioning vocabulary you get.

What the page does not give is any compatibility statement attached to those numbers. It names no Java version, no FFmpeg build, no platform constraint that the delegated tools depend on, and it does not say which of them the release bundles. For a repository whose selling point is formats, that silence is the gap to close before you pin a version to anything.

An Eclipse formatter trio and a React client share the tree with the server

One tree holds the server, the browser-facing part and the desktop launcher. src and scripts belong to the Java side, react-client is the web client, and at the root sit UMS.launch for Eclipse plus entitlements.xml, the file a macOS bundle needs. Editors are covered on both sides, with a .vscode directory and an Eclipse.README.txt.

Formatting rules are enforced from inside the repository rather than described in prose. CheckStyle.xml, Eclipse.Formatter.xml, Eclipse.Cleanup.xml and Eclipse.CodeTemplates.xml are all present, with STYLEGUIDE.md and CONTRIBUTING.md beside them, and the contributing section sends you to CONTRIBUTING.md for detailed setup and coding guidelines. A pull request is expected to arrive already formatted, and the formatting policy is a set of files you can read rather than a paragraph you can argue with.

The practical read for anyone weighing this project is that a change here is not confined to the media server. Server, web client and desktop launcher share one repository and one release number, and the page describes no build step for the web client separately from the server. That is a reasonable way to ship, and it also means the blast radius of any single release is wider than the one-line description suggests.

Editorial conclusion

Universal Media Server fits one shape of use: someone who wants DLNA and UPnP served from a Java server that hands format work to FFmpeg, MediaInfo and the rest, and who is content to take the binary from the project's website rather than from the repository. Before you pin a version, read INSTALL.txt and LICENSE.txt yourself, because the page states the license without a version, links to a LICENSE file that is not in the tree, and gives no compatibility detail for the release it advertises. If you need build steps, dependency versions or issue responses on your own schedule, the five names listed there are the size of the team you would be leaning on.

Frequently asked questions

what is universal media server

It is a Java media server for Windows, Linux and macOS that speaks DLNA, UPnP and HTTP(S), forked from PS3 Media Server by shagrath for stability and file-compatibility. Format handling is delegated to FFmpeg, MediaInfo, MEncoder, tsMuxeR, AviSynth and VLC, and it is licensed under GPL-2.0.

Is DLNA still supported?

DLNA is still first in the project's own one-line description, alongside UPnP and HTTP(S). Releases on the 15.8.x line shipped through 15.8.2 on 9 September 2026, and the repository is not archived.

how to install universal media server on ubuntu

That page carries no install command at all, for any platform. Setup instructions live in INSTALL.txt at the repository root, BUILD.md covers the Maven build that pom.xml describes, and the project's own downloads page is where the page sends users for binaries.

universal media server vs jellyfin

The repository does not compare itself to other servers in prose. It links a Comparison of popular media servers page on universalmediaserver.com, and the only differentiators stated here are the DLNA, UPnP and HTTP(S) protocols plus a five-person maintainer list.

Official sources

  1. License: GPL-2.0
  2. Project website
  3. README
  4. Releases
  5. UniversalMediaServer/UniversalMediaServer on GitHub
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/universalmediaserver-universalmediaserver.svg)](https://hysenlabs.com/projects/universalmediaserver-universalmediaserver)

Star history chart for your README

markdown
[![Star history](https://hysenlabs.com/chart/universalmediaserver-universalmediaserver.svg)](https://hysenlabs.com/projects/universalmediaserver-universalmediaserver)

Was this useful?