main 8f36acd7191f cached
25 files
180.8 KB
53.8k tokens
1 requests
Download .txt
Repository: awesome-jellyfin/awesome-jellyfin
Branch: main
Commit: 8f36acd7191f
Files: 25
Total size: 180.8 KB

Directory structure:
gitextract_mxfy2un7/

├── .github/
│   ├── CODEOWNERS
│   ├── ISSUE_TEMPLATE/
│   │   ├── 009-request-theme.yaml
│   │   ├── 010-request-client.yaml
│   │   ├── 099-request-other.yaml
│   │   ├── 100-report-mistake.yaml
│   │   └── 200-remove-project.yaml
│   └── workflows/
│       ├── check-for-pending-jobs.yaml
│       ├── clients-pull-request.yaml
│       ├── clients-update-clients.yaml
│       ├── lint.yaml
│       ├── monthly-release.yaml
│       └── sorting-pull-check.yaml
├── CLIENTS.md
├── CODE-OF-CONDUCT.md
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── THEMES.md
├── assets/
│   ├── DateCheck.sh
│   └── clients/
│       ├── CLIENTS.template.md
│       ├── README.md
│       ├── clients.yaml
│       └── icons/
│           └── .gitkeep
└── snippets/
    └── language-overlay/
        ├── README.md
        └── language-overlay.sh

================================================
FILE CONTENTS
================================================

================================================
FILE: .github/CODEOWNERS
================================================
* @awesome-jellyfin/review


================================================
FILE: .github/ISSUE_TEMPLATE/009-request-theme.yaml
================================================
name: "🎨 Add Theme"
description: >
  Do you have a theme that is not yet listed and want it to be listed in the repo?

title: "Add Theme <theme>"
labels:
  - request
  - theme

body:      
  - type: markdown
    attributes:
      value: |
        > [!IMPORTANT]
        > Before submitting, please read the **[Contribution Guidelines](https://github.com/awesome-jellyfin/awesome-jellyfin/blob/main/CONTRIBUTING.md)**.
        >  
        > If you are familiar with GitHub and know how to create a Pull Request, please consider submitting your suggestion **directly as a PR** instead of opening an issue:
        > https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request
        >
        > Pull Requests are usually reviewed faster. Issues are mainly intended for users who are unsure how to contribute via PR.
        
        **Thank you so much for your help to make this list even better! 💖**

  - type: input
    id: theme-name
    attributes:
      label: Theme Name
    validations:
      required: true

  - type: input
    id: theme-website
    attributes:
      label: Theme Website
      description: Link to the project (e.g. GitHub)
      placeholder: ex. https://github.com/awesome-jellyfin/awesome-jellyfin
    validations:
      required: true
  
  - type: checkboxes
    id: type
    attributes:
      label: Type
      description: Select the type of the theme
      options:
        - label: Changes Look and Feel
        - label: Introduces something
        - label: Fixes something

  - type: textarea
    id: screenshot-1
    attributes:
      label: Screenshot 1
      description: Add a link to a screenshot (if possible from original repository)
    validations:
      required: true

  - type: textarea
    id: screenshot-2
    attributes:
      label: Screenshot 2
      description: Add a link to a screenshot (if possible from original repository)
    validations:
      required: true

  - type: textarea
    id: screenshot-3
    attributes:
      label: Additional Screenshots (optional)
      description: Here you can add more screenshots
    validations:
      required: false  
    
  - type: checkboxes
    id: checklist
    attributes:
      label: Checklist
      options:
        - label: I have read the Contribution Guidelines
          required: true
        - label: I searched the list to make sure this theme is not already included
          required: true

  - type: textarea
    id: other
    attributes:
      label: Anything else?


================================================
FILE: .github/ISSUE_TEMPLATE/010-request-client.yaml
================================================
name: "📱 Add Client"
description: >
  Do you have a client that is not yet listed and want it to be listed in the repo?

title: "Add Client <client>"
labels:
  - request
  - client

body:      
  - type: markdown
    attributes:
      value: |
        > [!IMPORTANT]
        > Before submitting, please read the **[Contribution Guidelines](https://github.com/awesome-jellyfin/awesome-jellyfin/blob/main/CONTRIBUTING.md)**.
        >  
        > If you are familiar with GitHub and know how to create a Pull Request, please consider submitting your suggestion **directly as a PR** instead of opening an issue:
        > https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request
        >
        > Pull Requests are usually reviewed faster. Issues are mainly intended for users who are unsure how to contribute via PR.
        
        **Thank you so much for your help to make this list even better! 💖**

  - type: input
    id: client-name
    attributes:
      label: Client Name
    validations:
      required: true

  - type: input
    id: client-website
    attributes:
      label: Client Website
      description: Link to the project (e.g. GitHub)
      placeholder: ex. https://github.com/awesome-jellyfin/awesome-jellyfin
    validations:
      required: true
      
  - type: checkboxes
    id: targets
    attributes:
      label: Targets
      description: Which platforms does the client target?
      options:
        - label: Browser
        - label: Windows
        - label: macOS
        - label: Linux
        - label: iOS
        - label: Android
        - label: Sailfish OS
        - label: HarmonyOS
        - label: Nintendo Switch
        - label: Apple TV
        - label: Android TV
        - label: Kodi
        - label: Roku
        - label: WebOS
      
  - type: checkboxes
    id: price
    attributes:
      label: Price
      description: In-App Purchases should be marked as Paid
      options:
        - label: Free
        - label: Paid

  - type: textarea
    id: downloads
    attributes:
      label: Download Links
      description: Please provide all download links you can find, e.g. App Store, Play Store, ...
      placeholder: |
        GitHub: https://github.com/awesome-jellyfin/client
        App Store: https://apps.apple.com/app/id0000000000
    validations:
      required: true
  
  - type: checkboxes
    id: checklist
    attributes:
      label: Checklist
      options:
        - label: I have read the Contribution Guidelines
          required: true
        - label: The client appears to be actively maintained
          required: true
        - label: I searched the list to make sure this client is not already included
          required: true

  - type: textarea
    id: other
    attributes:
      label: Anything else?


================================================
FILE: .github/ISSUE_TEMPLATE/099-request-other.yaml
================================================
name: "✨ Request something else"
description: >
  Do you have anything else that is not yet listed and want it to be listed in the repo?

title: "Add <project>"
labels: 
  - request

body:
  - type: markdown
    attributes:
      value: |
        > [!IMPORTANT]
        > Before submitting, please read the **[Contribution Guidelines](https://github.com/awesome-jellyfin/awesome-jellyfin/blob/main/CONTRIBUTING.md)**.
        >  
        > If you are familiar with GitHub and know how to create a Pull Request, please consider submitting your suggestion **directly as a PR** instead of opening an issue:
        > https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request
        >
        > Pull Requests are usually reviewed faster. Issues are mainly intended for users who are unsure how to contribute via PR.
        
        **Thank you so much for your help to make this list even better! 💖**
      
  - type: input
    id: project-website
    attributes:
      label: Project Website
      description: Link to the project (usually a GitHub repository)
      placeholder: https://github.com/awesome-jellyfin/awesome-jellyfin
    validations:
      required: true
      
  - type: textarea
    id: project-description
    attributes:
      label: Project Description
      description: A general description of the project.
    validations:
      required: true

  - type: input
    id: short-description
    attributes:
      label: Short Description
      description: |
        This description will appear in the awesome list.

        Requirements:
          - **1 sentence** (max 2)  
          - **Neutral tone** (no promotion)  
          - **Do not mention implementation technologies** (e.g. "built with Python")  
          - **Start with a capital letter and end with a period**  
          - **Use proper names** (e.g. `Jellyfin`, `TMDb`)

        Example:
        ```
        Fingerprint audio to automatically detect intro and outro segments in Jellyfin.
        ```

        It may contain links or tags (such as `🔹 Beta`).
    validations:
      required: true
  
  - type: checkboxes
    id: checklist
    attributes:
      label: Checklist
      options:
        - label: I have read the Contribution Guidelines
          required: true
        - label: The project appears to be actively maintained
          required: true
        - label: I searched the list to make sure this project is not already included
          required: true
  
  - type: textarea
    id: other
    attributes:
      label: Anything else?


================================================
FILE: .github/ISSUE_TEMPLATE/100-report-mistake.yaml
================================================
name: "🚩 Report a mistake (e. g. Spelling, Grammar, ...)"
description: >
  Did you find an error in the list?

labels: 
  - bug

body:
  - type: markdown
    attributes:
      value: |
        > [!IMPORTANT]
        > Before submitting, please read the **[Contribution Guidelines](https://github.com/awesome-jellyfin/awesome-jellyfin/blob/main/CONTRIBUTING.md)**.
        >  
        > If you are familiar with GitHub and know how to create a Pull Request, please consider submitting your suggestion **directly as a PR** instead of opening an issue:
        > https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request
        >
        > Pull Requests are usually reviewed faster. Issues are mainly intended for users who are unsure how to contribute via PR.
        
        **Thank you so much for your help to make this list even better! 💖**
      
  - type: textarea
    id: what-problem
    attributes:
      label: "What's the problem?"
      description: Briefly describe the error / suggest changes
      placeholder: "wrote 'Jelyfin' instead of 'Jellyfin'"
    validations:
      required: true
      
  - type: input
    id: where-problem
    attributes:
      label: "Where's the problem?"
      description: Line Number of the problem
      placeholder: "ex. https://github.com/awesome-jellyfin/awesome-jellyfin/blob/main/README.md?plain=1#L20"
    validations:
      required: true
    
  - type: markdown
    attributes:
      value: |
        > Please enter the Line Number of the problem to make it easier for us to find the problem. 
        > You can find the line numbers [here](https://github.com/awesome-jellyfin/awesome-jellyfin/blob/main/README.md?plain=1). You can click on the line numbers to get the URL for the clicked line.

================================================
FILE: .github/ISSUE_TEMPLATE/200-remove-project.yaml
================================================
name: "🔍 Report a project (e. g. Inactive, Broken, Harmful, ...)"
description: >
  Did you find a project, which shouldn't be on the list anymore? 
  Are you a maintainer of one of the listed projects and want it removed?

title: "Remove <project>"
labels: 
  - removal

body:
  - type: markdown
    attributes:
      value: |
        > [!IMPORTANT]
        > Before submitting, please read the **[Contribution Guidelines](https://github.com/awesome-jellyfin/awesome-jellyfin/blob/main/CONTRIBUTING.md)**.
        >  
        > If you are familiar with GitHub and know how to create a Pull Request, please consider submitting your suggestion **directly as a PR** instead of opening an issue:
        > https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request
        >
        > Pull Requests are usually reviewed faster. Issues are mainly intended for users who are unsure how to contribute via PR.
        
        **Thank you so much for your help to make this list even better! 💖**
      
  - type: input
    id: affected-project
    attributes:
      label: Affected Project
      description: Which project should be removed?
    validations:
      required: true
      
  - type: textarea
    id: reason-for-removal
    attributes:
      label: Reason for removal
      description: Why should this project be removed?
    validations:
      required: true
    

================================================
FILE: .github/workflows/check-for-pending-jobs.yaml
================================================
name: Check for Pending Jobs

on:
  schedule:
    - cron: '32 */6 * * *'
  workflow_dispatch: {}

jobs:
  hit-endpoint:
    runs-on: ubuntu-latest

    concurrency:
      group: ping-url
      cancel-in-progress: false

    steps:
      - name: Run checks
        env:
          TARGET_URL: "${{ secrets.PENDING_JOBS_CHECK_URL }}&owner=awesome-jellyfin&repo=awesome-jellyfin&ping=awesome-jellyfin%2Freview"
        run: |
          curl -fL --retry 3 --max-time 30 "$TARGET_URL"


================================================
FILE: .github/workflows/clients-pull-request.yaml
================================================
name: 'Clients Update Pull Request'

on:
  # pull_request:
  #  paths:
  #    - 'assets/clients/clients.yaml'
  workflow_dispatch:

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - name: Checkout repository
      uses: actions/checkout@v3

    - name: Set up Go
      uses: actions/setup-go@v3
      with:
        go-version: '1.21'

    - name: Test if we can generate clients
      run: |
        go install github.com/awesome-jellyfin/clients-md-generator/cmd/generate@latest
        generate -input assets/clients/clients.yaml -out-stdout -out-file clients_result.md
    
    - name: Create Comment Body
      run: |
        cat <<EOF > comment_body.txt
        <!-- [clients-result] -->
        **Thank you for your contribution! ❤️**
        
        Here you can find a preview of the generated <code>CLIENTS.md</code> file:

        <details>
          <summary><code>CLIENTS.md</code></summary>

          $(cat clients_result.md)
          
        </details>
        EOF
        
    - name: Find Comment from Linter
      uses: peter-evans/find-comment@v3
      id: fc
      with:
        issue-number: ${{ github.event.number }}
        comment-author: 'awesome-jellyfin-bot'
        body-includes: '<!-- [clients-result] -->'
          
    - name: Create or Update Comment
      uses: peter-evans/create-or-update-comment@v4
      with:
        token: ${{ secrets.AWESOME_JELLYFIN_BOT_TOKEN }}
        comment-id: ${{ steps.fc.outputs.comment-id }}
        issue-number: ${{ github.event.number }}
        edit-mode: replace
        body-path: comment_body.txt


================================================
FILE: .github/workflows/clients-update-clients.yaml
================================================
name: '[Clients] Update CLIENTS.md'

on:
  push:
    branches:
      - 'main'
    paths:
      - 'assets/clients/clients.yaml'
      - 'assets/clients/CLIENTS.template.md'
  workflow_dispatch:

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - name: Checkout repository
      uses: actions/checkout@v3
      with:
        fetch-depth: 0
        token: ${{ secrets.AWESOME_JELLYFIN_BOT_TOKEN }}

    - name: Set up Go
      uses: actions/setup-go@v3
      with:
        go-version: '1.21'

    - name: Generate CLIENTS.md
      run: |
        go install github.com/awesome-jellyfin/clients-md-generator/cmd/generate@latest
        generate -input assets/clients/clients.yaml -out-file assets/clients/generated-clients.md

        echo "" > CLIENTS.md
        while read p; do
          if [[ $p == "{{ CLIENTS }}" ]]; then
            cat assets/clients/generated-clients.md >> CLIENTS.md
          else
            echo "$p" >> CLIENTS.md
          fi
        done < assets/clients/CLIENTS.template.md

    - name: Commit and push if there are changes
      run: |
        git config --local user.email "awesome-jellyfin@d2a.io"
        git config --local user.name "awesome-jellyfin-bot"
        git add CLIENTS.md
        git commit -m "chore: update CLIENTS.md" --allow-empty || exit 0
        git push


================================================
FILE: .github/workflows/lint.yaml
================================================
name: Lint

on:
  pull_request:
    branches: [main]
    paths:
      - "**/*.md"

jobs:
  lint:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v5
        with:
          fetch-depth: 0

      - uses: oven-sh/setup-bun@v2
        with:
          bun-version: latest

      - run: bunx https://github.com/awesome-jellyfin/awesome-lint


================================================
FILE: .github/workflows/monthly-release.yaml
================================================
name: Monthly Release

on:
  schedule:
    - cron: "42 9 1 * *"
  workflow_dispatch:

permissions:
  contents: write

concurrency:
  group: monthly-release
  cancel-in-progress: false

jobs:
  release:
    runs-on: ubuntu-latest

    steps:
      - name: Check out repository
        uses: actions/checkout@v6
        with:
          fetch-depth: 0

      - name: Fetch tags
        run: git fetch --tags --force

      - name: Decide whether a release is needed
        id: check
        shell: bash
        run: |
          set -euo pipefail

          TAG="monthly/$(date -u +'%Y-%m')"
          TITLE="Monthly - $(date -u +'%B %Y')"

          echo "tag=$TAG" >> "$GITHUB_OUTPUT"
          echo "title=$TITLE" >> "$GITHUB_OUTPUT"

          # skip tag already exists
          if git rev-parse "$TAG" >/dev/null 2>&1; then
            echo "should_release=false" >> "$GITHUB_OUTPUT"
            echo "reason=tag_exists" >> "$GITHUB_OUTPUT"
            exit 0
          fi

          LAST_TAG="$(git tag --sort=-creatordate | head -n 1 || true)"

          if [ -z "$LAST_TAG" ]; then
            echo "should_release=false" >> "$GITHUB_OUTPUT"
            echo "reason=no_tag_found" >> "$GITHUB_OUTPUT"
            exit 0
          fi
          
          COMMIT_COUNT="$(git rev-list --count "${LAST_TAG}..HEAD")"
          echo "previous_tag=$LAST_TAG" >> "$GITHUB_OUTPUT"
          echo "commit_count=$COMMIT_COUNT" >> "$GITHUB_OUTPUT"

          # require at least 10 commits for a monthly update
          if [ "$COMMIT_COUNT" -lt 10 ]; then
            echo "should_release=false" >> "$GITHUB_OUTPUT"
            echo "reason=not_enough_commits" >> "$GITHUB_OUTPUT"
          else
            echo "should_release=true" >> "$GITHUB_OUTPUT"
            echo "reason=threshold_met" >> "$GITHUB_OUTPUT"
          fi

      - name: Build release intro
        if: steps.check.outputs.should_release == 'true'
        id: notes
        shell: bash
        run: |
          set -euo pipefail

          TITLE="${{ steps.check.outputs.title }}"
          COUNT="${{ steps.check.outputs.commit_count }}"
          PREV="${{ steps.check.outputs.previous_tag }}"

          {
            echo "file=release-intro.md" >> "$GITHUB_OUTPUT"
            echo "- Commits since last release: **$COUNT**"
            echo "- Previous release tag: \`$PREV\`"
            echo "- Full list: [README](./README.md)"
            echo
            echo "---"
            echo
          } > release-intro.md

      - name: Create GitHub release with generated notes
        if: steps.check.outputs.should_release == 'true'
        env:
          GH_TOKEN: ${{ github.token }}
        run: |
          gh release create "${{ steps.check.outputs.tag }}" \
            --target "${{ github.sha }}" \
            --title "${{ steps.check.outputs.title }}" \
            --notes-file "${{ steps.notes.outputs.file }}" \
            --generate-notes \
            --latest

      - name: Log skip reason
        if: steps.check.outputs.should_release != 'true'
        run: |
          echo "Skipping release."
          echo "Reason: ${{ steps.check.outputs.reason }}"
          echo "Commits since previous release: ${{ steps.check.outputs.commit_count }}"


================================================
FILE: .github/workflows/sorting-pull-check.yaml
================================================
name: 'README Update Pull Request'

on:
  # pull_request:
  #   paths:
  #     - 'README.md'
  workflow_dispatch:

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - name: Checkout repository
      uses: actions/checkout@v3

    - name: Set up Go
      uses: actions/setup-go@v3
      with:
        go-version: '1.21'
      
    - name: Install Sorter
      run: |
        go install github.com/awesome-jellyfin/clients-md-generator/cmd/sort@v1.0.1
      
    - name: Sort README
      id: sorting
      run: |
        go run github.com/awesome-jellyfin/clients-md-generator/cmd/sort@v1.0.1 \
           -input README.md \
           -out-file README.sorted.md \
           -out-stdout \
           -fail
      continue-on-error: true

    - name: Generate Comment Body on Failure
      if: steps.sorting.outcome == 'failure'
      run: |
        cat <<EOF > comment_body.txt
        <!-- [sort-result] -->
        **Thank you for your contribution! ❤️**
        
        We found sorting changes in <code>README.md</code>.
        Here is a diff showing what changed:

        <details>
          <summary><code>README.md</code> diff</summary>

        \`\`\`diff
        $(diff -u README.md README.sorted.md || true)
        \`\`\`
          
        </details>
        EOF

    - name: Generate Comment Body on Success
      if: steps.sorting.outcome != 'failure'
      run: |
        cat <<EOF > comment_body.txt
        <!-- [sort-result] -->
        **Thank you for your contribution! ❤️**
        
        No issues found with the ordering.
        EOF

    - name: Find Comment from Linter
      uses: peter-evans/find-comment@v3
      id: fc
      with:
        issue-number: ${{ github.event.number }}
        comment-author: 'awesome-jellyfin-bot'
        body-includes: '<!-- [sort-result] -->'

    - name: Create or Update Sorting Diff Comment
      uses: peter-evans/create-or-update-comment@v4
      with:
        token: ${{ secrets.AWESOME_JELLYFIN_BOT_TOKEN }}
        comment-id: ${{ steps.fc.outputs.comment-id }}
        issue-number: ${{ github.event.number }}
        body-path: comment_body.txt
        edit-mode: replace

    - name: Fail if sorting changed
      if: steps.sorting.outcome == 'failure'
      run: |
        echo "README.md requires sorting. Failing the pipeline."
        exit 1


================================================
FILE: CLIENTS.md
================================================

<!--
⚠️ WARNING: DO NOT EDIT THIS FILE ⚠️

This Markdown file is auto-generated from the `assets/clients/clients.yaml` file.
Any manual changes made to this file will be overwritten the next time it is generated.
To make changes, please edit the `assets/clients/clients.yaml` file and regenerate this Markdown file.
-->

<p align="center">
<img src="assets/banner.png" />
<h1 align="center"><a href="https://github.com/awesome-jellyfin/awesome-jellyfin">Awesome Jellyfin</a> > Clients</h1>
</p>

# By Environment

## 🌎 Browser-Based

| Name | OSS | Free | Paid | Downloads |
| ---- | --- | ---- | ---- | --------- |
| [ampcast ` ⚒️ ` ` 🎵 `](https://github.com/rekkyrosso/ampcast) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/rekkyrosso/ampcast/total?logo=github&label=GitHub)](https://github.com/rekkyrosso/ampcast/releases) |
| [Aperture ` ⚒️ `](https://github.com/akhilmulpurii/aperture) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/akhilmulpurii/aperture/total?logo=github&label=GitHub)](https://github.com/akhilmulpurii/aperture/releases) |
| [Feishin ` ⚒️ ` ` 🎵 `](https://github.com/jeffvli/feishin) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/jeffvli/feishin/total?logo=github&label=GitHub)](https://github.com/jeffvli/feishin/releases) |
| [Finetic](https://github.com/AyaanZaveri/finetic) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/AyaanZaveri/finetic/total?logo=github&label=GitHub)](https://github.com/AyaanZaveri/finetic/releases) |
| [Fladder](https://github.com/DonutWare/Fladder) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/DonutWare/Fladder/total?logo=github&label=GitHub)](https://github.com/DonutWare/Fladder/releases) [![Google Play](https://img.shields.io/badge/Google%20Play-grey?logo=Google+Play&label=)](https://play.google.com/store/apps/details?id=nl.jknaapen.fladder) |
| [Jelly Music App ` 🎵 `](https://github.com/Stannnnn/jelly-app) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/Stannnnn/jelly-app/total?logo=github&label=GitHub)](https://github.com/Stannnnn/jelly-app/releases) |
| [Jellyfin Vue ` 🔹 ` ` ⚒️ `](https://github.com/jellyfin/jellyfin-vue) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/jellyfin/jellyfin-vue/total?logo=github&label=GitHub)](https://github.com/jellyfin/jellyfin-vue/actions/workflows/release.yml) [![Demo](https://img.shields.io/badge/Web-blue?logo=&label=Demo)](https://jf-vue.pages.dev/) |
| [Jellyflix](https://github.com/jellyflix-app/jellyflix) | ✅ | ✅ | ❎ | [![Demo](https://img.shields.io/badge/Web-blue?logo=&label=Demo)](https://jellyflix.kiejon.com/) [![App Store](https://img.shields.io/badge/App%20Store-grey?logo=App+Store&label=)](https://apps.apple.com/app/id6476043683) [![github](https://img.shields.io/github/downloads/jellyflix-app/jellyflix/total?logo=github&label=GitHub)](https://github.com/jellyflix-app/jellyflix/releases) |
| [Pelagica](https://github.com/KartoffelChipss/pelagica) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/KartoffelChipss/pelagica/total?logo=github&label=GitHub)](https://github.com/KartoffelChipss/pelagica/releases) [![Demo](https://img.shields.io/badge/Web-blue?logo=&label=Demo)](https://pelagica.jan.run) |
| [Preserve ` ⚒️ ` ` 🎵 `](https://gitlab.com/preserve/preserve) | ✅ | ✅ | ❎ | [![GitLab](https://img.shields.io/badge/GitLab-grey?logo=GitLab&label=)](https://gitlab.com/preserve/preserve) [![Demo](https://img.shields.io/badge/Web-blue?logo=&label=Demo)](https://preserveplayer.com/) |
| [Shadfin ` ⚒️ `](https://github.com/Shadfin/app) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/Shadfin/app/total?logo=github&label=GitHub)](https://github.com/Shadfin/app/releases) [![Demo](https://img.shields.io/badge/Web-blue?logo=&label=Demo)](https://main.shadfin-standalone.pages.dev) |
| [sonixd ` ⚒️ ` ` 🎵 `](https://github.com/jeffvli/sonixd) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/jeffvli/sonixd/total?logo=github&label=GitHub)](https://github.com/jeffvli/sonixd/releases) |


## 💻 Desktop

### Windows

| Name | OSS | Free | Paid | Downloads |
| ---- | --- | ---- | ---- | --------- |
| [ampcast ` ⚒️ ` ` 🎵 `](https://github.com/rekkyrosso/ampcast) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/rekkyrosso/ampcast/total?logo=github&label=GitHub)](https://github.com/rekkyrosso/ampcast/releases) |
| [Blink ` ⚒️ `](https://github.com/prayag17/Blink) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/prayag17/Blink/total?logo=github&label=GitHub)](https://github.com/prayag17/Blink/releases) |
| [Bloodin ` ⚒️ `](https://github.com/pathetic/bloodin) | ✅ | ✅ | ❎ |  |
| [Feishin ` ⚒️ ` ` 🎵 `](https://github.com/jeffvli/feishin) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/jeffvli/feishin/total?logo=github&label=GitHub)](https://github.com/jeffvli/feishin/releases) |
| [Fladder](https://github.com/DonutWare/Fladder) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/DonutWare/Fladder/total?logo=github&label=GitHub)](https://github.com/DonutWare/Fladder/releases) [![Google Play](https://img.shields.io/badge/Google%20Play-grey?logo=Google+Play&label=)](https://play.google.com/store/apps/details?id=nl.jknaapen.fladder) |
| [FluentFin ` ⚒️ `](https://github.com/insomniachi/FluentFin) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/insomniachi/FluentFin/total?logo=github&label=GitHub)](https://github.com/insomniachi/FluentFin/releases) |
| [Foxy ` 🎵 `](https://github.com/Devioxic/Foxy-Desktop) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/Devioxic/Foxy-Desktop/total?logo=github&label=GitHub)](https://github.com/Devioxic/Foxy-Desktop/releases) |
| [Hills](https://play.google.com/store/apps/details?id=com.mountains.hills) | ❌ | ✅ | ☑️ | [![Google Play](https://img.shields.io/badge/Google%20Play-grey?logo=Google+Play&label=)](https://play.google.com/store/apps/details?id=com.mountains.hills) [![Microsoft Store](https://img.shields.io/badge/-grey?logo=&label=Microsoft+Store)](https://apps.microsoft.com/detail/9NXNZFRLLWZX) |
| [iPlay](https://github.com/saltpi/iPlay) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/saltpi/iPlay/total?logo=github&label=GitHub)](https://github.com/saltpi/iPlay/releases) [![App Store](https://img.shields.io/badge/App%20Store-grey?logo=App+Store&label=)](https://apps.apple.com/app/id6480576133) [![Amazon](https://img.shields.io/badge/Amazon-grey?logo=Amazon&label=)](https://www.amazon.com/gp/product/B0DB2KL58G) [![Microsoft Store](https://img.shields.io/badge/-grey?logo=&label=Microsoft+Store)](https://apps.microsoft.com/detail/9NBZ2BXD4WFZ) |
| [Jelly Music App ` 🎵 `](https://github.com/Stannnnn/jelly-app) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/Stannnnn/jelly-app/total?logo=github&label=GitHub)](https://github.com/Stannnnn/jelly-app/releases) |
| [Jellyamp ` 🎵 `](https://github.com/m0ngr31/jellyamp) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/m0ngr31/jellyamp/total?logo=github&label=GitHub)](https://github.com/m0ngr31/jellyamp/releases) |
| [Jellyfin Media Player ` 🔹 `](https://github.com/jellyfin/jellyfin-media-player) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/jellyfin/jellyfin-media-player/total?logo=github&label=GitHub)](https://github.com/jellyfin/jellyfin-media-player/releases) [![flathub](https://img.shields.io/flathub/downloads/com.github.iwalton3.jellyfin-media-player?logo=Flathub&label=Flathub)](https://flathub.org/apps/com.github.iwalton3.jellyfin-media-player) |
| [Jellyfin MPV Shim ` 🔹 `](https://github.com/jellyfin/jellyfin-mpv-shim) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/jellyfin/jellyfin-mpv-shim/total?logo=github&label=GitHub)](https://github.com/jellyfin/jellyfin-mpv-shim/releases) [![flathub](https://img.shields.io/flathub/downloads/com.github.iwalton3.jellyfin-mpv-shim?logo=Flathub&label=Flathub)](https://flathub.org/apps/com.github.iwalton3.jellyfin-mpv-shim) |
| [Jellyflix](https://github.com/jellyflix-app/jellyflix) | ✅ | ✅ | ❎ | [![Demo](https://img.shields.io/badge/Web-blue?logo=&label=Demo)](https://jellyflix.kiejon.com/) [![App Store](https://img.shields.io/badge/App%20Store-grey?logo=App+Store&label=)](https://apps.apple.com/app/id6476043683) [![github](https://img.shields.io/github/downloads/jellyflix-app/jellyflix/total?logo=github&label=GitHub)](https://github.com/jellyflix-app/jellyflix/releases) |
| [Playtorrio](https://github.com/ayman708-UX/PlayTorrio) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/ayman708-UX/PlayTorrio/total?logo=github&label=GitHub)](https://github.com/ayman708-UX/PlayTorrio/releases) |
| [Preserve ` ⚒️ ` ` 🎵 `](https://gitlab.com/preserve/preserve) | ✅ | ✅ | ❎ | [![GitLab](https://img.shields.io/badge/GitLab-grey?logo=GitLab&label=)](https://gitlab.com/preserve/preserve) [![Demo](https://img.shields.io/badge/Web-blue?logo=&label=Demo)](https://preserveplayer.com/) |
| [Rodel Player](https://apps.microsoft.com/detail/9nb0h051m4v4) | ❌ | ✅ | ❎ | [![Microsoft Store](https://img.shields.io/badge/-grey?logo=&label=Microsoft+Store)](https://apps.microsoft.com/detail/9nb0h051m4v4) |
| [Sonixd ` ⚒️ ` ` 🎵 `](https://github.com/jeffvli/sonixd) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/jeffvli/sonixd/total?logo=github&label=GitHub)](https://github.com/jeffvli/sonixd/releases) |
| [Supersonic ` ⚒️ ` ` 🎵 `](https://github.com/dweymouth/supersonic) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/dweymouth/supersonic/total?logo=github&label=GitHub)](https://github.com/dweymouth/supersonic/releases) [![flathub](https://img.shields.io/flathub/downloads/io.github.dweymouth.supersonic?logo=Flathub&label=Flathub)](https://flathub.org/apps/io.github.dweymouth.supersonic) |
| [Switchfin ` ⚒️ `](https://github.com/dragonflylee/switchfin) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/dragonflylee/switchfin/total?logo=github&label=GitHub)](https://github.com/dragonflylee/switchfin/releases) |
| [Tauon Music Box ` 🎵 `](https://github.com/Taiko2k/TauonMusicBox) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/Taiko2k/TauonMusicBox/total?logo=github&label=GitHub)](https://github.com/Taiko2k/TauonMusicBox/releases) [![flathub](https://img.shields.io/flathub/downloads/com.github.taiko2k.tauonmb?logo=Flathub&label=Flathub)](https://flathub.org/apps/com.github.taiko2k.tauonmb) |
| [tsukimi ` ⚒️ `](https://github.com/tsukinaha/tsukimi) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/tsukinaha/tsukimi/total?logo=github&label=GitHub)](https://github.com/tsukinaha/tsukimi/releases) |


### macOS

| Name | OSS | Free | Paid | Downloads |
| ---- | --- | ---- | ---- | --------- |
| [ampcast ` ⚒️ ` ` 🎵 `](https://github.com/rekkyrosso/ampcast) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/rekkyrosso/ampcast/total?logo=github&label=GitHub)](https://github.com/rekkyrosso/ampcast/releases) |
| [Blink ` ⚒️ `](https://github.com/prayag17/Blink) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/prayag17/Blink/total?logo=github&label=GitHub)](https://github.com/prayag17/Blink/releases) |
| [Bloodin ` ⚒️ `](https://github.com/pathetic/bloodin) | ✅ | ✅ | ❎ |  |
| [Coppelia ` ⚒️ ` ` 🎵 `](https://github.com/j6k4m8/coppelia) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/j6k4m8/coppelia/total?logo=github&label=GitHub)](https://github.com/j6k4m8/coppelia/releases) |
| [Dee Jellie ` 🎵 `](https://www.deejellie.com) | ❌ | ❌ | ☑️ | [![App Store](https://img.shields.io/badge/App%20Store-grey?logo=App+Store&label=)](https://apps.apple.com/app/id6755585736) |
| [Discrete ` 🎵 `](https://discrete.app/) | ❌ | ✅ | ☑️ | [![App Store](https://img.shields.io/badge/App%20Store-grey?logo=App+Store&label=)](https://apps.apple.com/app/id6746067740) |
| [Feishin ` ⚒️ ` ` 🎵 `](https://github.com/jeffvli/feishin) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/jeffvli/feishin/total?logo=github&label=GitHub)](https://github.com/jeffvli/feishin/releases) |
| [Finer ` 🎵 `](https://monk-studio.com/finer) | ❌ | ✅ | ❎ | [![App Store](https://img.shields.io/badge/App%20Store-grey?logo=App+Store&label=)](https://apps.apple.com/app/id6738301953) |
| [Fladder](https://github.com/DonutWare/Fladder) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/DonutWare/Fladder/total?logo=github&label=GitHub)](https://github.com/DonutWare/Fladder/releases) [![Google Play](https://img.shields.io/badge/Google%20Play-grey?logo=Google+Play&label=)](https://play.google.com/store/apps/details?id=nl.jknaapen.fladder) |
| [Foxy ` 🎵 `](https://github.com/Devioxic/Foxy-Desktop) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/Devioxic/Foxy-Desktop/total?logo=github&label=GitHub)](https://github.com/Devioxic/Foxy-Desktop/releases) |
| [HamHub](https://www.hamhub.app/) | ❌ | ✅ | ❎ | [![App Store](https://img.shields.io/badge/App%20Store-grey?logo=App+Store&label=)](https://apps.apple.com/app/id6458691598) |
| [Infuse](https://firecore.com/infuse) | ❌ | ✅ | ☑️ | [![App Store](https://img.shields.io/badge/App%20Store-grey?logo=App+Store&label=)](https://apps.apple.com/app/id1136220934) |
| [iPlay](https://github.com/saltpi/iPlay) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/saltpi/iPlay/total?logo=github&label=GitHub)](https://github.com/saltpi/iPlay/releases) [![App Store](https://img.shields.io/badge/App%20Store-grey?logo=App+Store&label=)](https://apps.apple.com/app/id6480576133) [![Amazon](https://img.shields.io/badge/Amazon-grey?logo=Amazon&label=)](https://www.amazon.com/gp/product/B0DB2KL58G) [![Microsoft Store](https://img.shields.io/badge/-grey?logo=&label=Microsoft+Store)](https://apps.microsoft.com/detail/9NBZ2BXD4WFZ) |
| [Jelly Music App ` 🎵 `](https://github.com/Stannnnn/jelly-app) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/Stannnnn/jelly-app/total?logo=github&label=GitHub)](https://github.com/Stannnnn/jelly-app/releases) |
| [Jellyfin Media Player ` 🔹 `](https://github.com/jellyfin/jellyfin-media-player) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/jellyfin/jellyfin-media-player/total?logo=github&label=GitHub)](https://github.com/jellyfin/jellyfin-media-player/releases) [![flathub](https://img.shields.io/flathub/downloads/com.github.iwalton3.jellyfin-media-player?logo=Flathub&label=Flathub)](https://flathub.org/apps/com.github.iwalton3.jellyfin-media-player) |
| [Jellyfin MPV Shim ` 🔹 `](https://github.com/jellyfin/jellyfin-mpv-shim) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/jellyfin/jellyfin-mpv-shim/total?logo=github&label=GitHub)](https://github.com/jellyfin/jellyfin-mpv-shim/releases) [![flathub](https://img.shields.io/flathub/downloads/com.github.iwalton3.jellyfin-mpv-shim?logo=Flathub&label=Flathub)](https://flathub.org/apps/com.github.iwalton3.jellyfin-mpv-shim) |
| [Jellyflix](https://github.com/jellyflix-app/jellyflix) | ✅ | ✅ | ❎ | [![Demo](https://img.shields.io/badge/Web-blue?logo=&label=Demo)](https://jellyflix.kiejon.com/) [![App Store](https://img.shields.io/badge/App%20Store-grey?logo=App+Store&label=)](https://apps.apple.com/app/id6476043683) [![github](https://img.shields.io/github/downloads/jellyflix-app/jellyflix/total?logo=github&label=GitHub)](https://github.com/jellyflix-app/jellyflix/releases) |
| [Phyn](https://phyn.app) | ❌ | ✅ | ☑️ | [![Google Play](https://img.shields.io/badge/Google%20Play-grey?logo=Google+Play&label=)](https://play.google.com/store/apps/details?id=com.appsynergyts.phyn) [![App Store](https://img.shields.io/badge/App%20Store-grey?logo=App+Store&label=)](https://apps.apple.com/app/id6457674815) |
| [Playtorrio](https://github.com/ayman708-UX/PlayTorrio) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/ayman708-UX/PlayTorrio/total?logo=github&label=GitHub)](https://github.com/ayman708-UX/PlayTorrio/releases) |
| [SenPlayer](https://apps.apple.com/app/id6443975850) | ❌ | ✅ | ☑️ | [![App Store](https://img.shields.io/badge/App%20Store-grey?logo=App+Store&label=)](https://apps.apple.com/app/id6443975850) |
| [Sonixd ` ⚒️ ` ` 🎵 `](https://github.com/jeffvli/sonixd) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/jeffvli/sonixd/total?logo=github&label=GitHub)](https://github.com/jeffvli/sonixd/releases) |
| [Supersonic ` ⚒️ ` ` 🎵 `](https://github.com/dweymouth/supersonic) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/dweymouth/supersonic/total?logo=github&label=GitHub)](https://github.com/dweymouth/supersonic/releases) [![flathub](https://img.shields.io/flathub/downloads/io.github.dweymouth.supersonic?logo=Flathub&label=Flathub)](https://flathub.org/apps/io.github.dweymouth.supersonic) |
| [Switchfin ` ⚒️ `](https://github.com/dragonflylee/switchfin) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/dragonflylee/switchfin/total?logo=github&label=GitHub)](https://github.com/dragonflylee/switchfin/releases) |
| [VidHub](https://okaapps.com/product/1659622164) | ❌ | ✅ | ☑️ | [![Google Play](https://img.shields.io/badge/Google%20Play-grey?logo=Google+Play&label=)](https://play.google.com/store/apps/details?id=com.oumi.utility.media.hub) [![App Store](https://img.shields.io/badge/App%20Store-grey?logo=App+Store&label=)](https://apps.apple.com/app/id1659622164) |


### Linux

| Name | OSS | Free | Paid | Downloads |
| ---- | --- | ---- | ---- | --------- |
| [ampcast ` ⚒️ ` ` 🎵 `](https://github.com/rekkyrosso/ampcast) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/rekkyrosso/ampcast/total?logo=github&label=GitHub)](https://github.com/rekkyrosso/ampcast/releases) |
| [Blink ` ⚒️ `](https://github.com/prayag17/Blink) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/prayag17/Blink/total?logo=github&label=GitHub)](https://github.com/prayag17/Blink/releases) |
| [Bloodin ` ⚒️ `](https://github.com/pathetic/bloodin) | ✅ | ✅ | ❎ |  |
| [Coppelia ` ⚒️ ` ` 🎵 `](https://github.com/j6k4m8/coppelia) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/j6k4m8/coppelia/total?logo=github&label=GitHub)](https://github.com/j6k4m8/coppelia/releases) |
| [Delfin ` ⚒️ `](https://codeberg.org/avery42/delfin) | ✅ | ✅ | ❎ | [![flathub](https://img.shields.io/flathub/downloads/cafe.avery.Delfin?logo=Flathub&label=Flathub)](https://flathub.org/apps/cafe.avery.Delfin) |
| [Feishin ` ⚒️ ` ` 🎵 `](https://github.com/jeffvli/feishin) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/jeffvli/feishin/total?logo=github&label=GitHub)](https://github.com/jeffvli/feishin/releases) |
| [Fladder](https://github.com/DonutWare/Fladder) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/DonutWare/Fladder/total?logo=github&label=GitHub)](https://github.com/DonutWare/Fladder/releases) [![Google Play](https://img.shields.io/badge/Google%20Play-grey?logo=Google+Play&label=)](https://play.google.com/store/apps/details?id=nl.jknaapen.fladder) |
| [Foxy ` 🎵 `](https://github.com/Devioxic/Foxy-Desktop) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/Devioxic/Foxy-Desktop/total?logo=github&label=GitHub)](https://github.com/Devioxic/Foxy-Desktop/releases) |
| [Gelly ` ⚒️ ` ` 🎵 `](https://github.com/Fingel/gelly) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/Fingel/gelly/total?logo=github&label=GitHub)](https://github.com/Fingel/gelly/releases) [![flathub](https://img.shields.io/flathub/downloads/io.m51.Gelly?logo=Flathub&label=Flathub)](https://flathub.org/apps/io.m51.Gelly) |
| [Jelly Music App ` 🎵 `](https://github.com/Stannnnn/jelly-app) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/Stannnnn/jelly-app/total?logo=github&label=GitHub)](https://github.com/Stannnnn/jelly-app/releases) |
| [Jellyamp ` 🎵 `](https://github.com/m0ngr31/jellyamp) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/m0ngr31/jellyamp/total?logo=github&label=GitHub)](https://github.com/m0ngr31/jellyamp/releases) |
| [Jellyfin Media Player ` 🔹 `](https://github.com/jellyfin/jellyfin-media-player) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/jellyfin/jellyfin-media-player/total?logo=github&label=GitHub)](https://github.com/jellyfin/jellyfin-media-player/releases) [![flathub](https://img.shields.io/flathub/downloads/com.github.iwalton3.jellyfin-media-player?logo=Flathub&label=Flathub)](https://flathub.org/apps/com.github.iwalton3.jellyfin-media-player) |
| [Jellyfin MPV Shim ` 🔹 `](https://github.com/jellyfin/jellyfin-mpv-shim) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/jellyfin/jellyfin-mpv-shim/total?logo=github&label=GitHub)](https://github.com/jellyfin/jellyfin-mpv-shim/releases) [![flathub](https://img.shields.io/flathub/downloads/com.github.iwalton3.jellyfin-mpv-shim?logo=Flathub&label=Flathub)](https://flathub.org/apps/com.github.iwalton3.jellyfin-mpv-shim) |
| [Jellyflix](https://github.com/jellyflix-app/jellyflix) | ✅ | ✅ | ❎ | [![Demo](https://img.shields.io/badge/Web-blue?logo=&label=Demo)](https://jellyflix.kiejon.com/) [![App Store](https://img.shields.io/badge/App%20Store-grey?logo=App+Store&label=)](https://apps.apple.com/app/id6476043683) [![github](https://img.shields.io/github/downloads/jellyflix-app/jellyflix/total?logo=github&label=GitHub)](https://github.com/jellyflix-app/jellyflix/releases) |
| [Playtorrio](https://github.com/ayman708-UX/PlayTorrio) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/ayman708-UX/PlayTorrio/total?logo=github&label=GitHub)](https://github.com/ayman708-UX/PlayTorrio/releases) |
| [Preserve ` ⚒️ ` ` 🎵 `](https://gitlab.com/preserve/preserve) | ✅ | ✅ | ❎ | [![GitLab](https://img.shields.io/badge/GitLab-grey?logo=GitLab&label=)](https://gitlab.com/preserve/preserve) [![Demo](https://img.shields.io/badge/Web-blue?logo=&label=Demo)](https://preserveplayer.com/) |
| [Sonixd ` ⚒️ ` ` 🎵 `](https://github.com/jeffvli/sonixd) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/jeffvli/sonixd/total?logo=github&label=GitHub)](https://github.com/jeffvli/sonixd/releases) |
| [Supersonic ` ⚒️ ` ` 🎵 `](https://github.com/dweymouth/supersonic) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/dweymouth/supersonic/total?logo=github&label=GitHub)](https://github.com/dweymouth/supersonic/releases) [![flathub](https://img.shields.io/flathub/downloads/io.github.dweymouth.supersonic?logo=Flathub&label=Flathub)](https://flathub.org/apps/io.github.dweymouth.supersonic) |
| [Switchfin ` ⚒️ `](https://github.com/dragonflylee/switchfin) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/dragonflylee/switchfin/total?logo=github&label=GitHub)](https://github.com/dragonflylee/switchfin/releases) |
| [Tauon Music Box ` 🎵 `](https://github.com/Taiko2k/TauonMusicBox) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/Taiko2k/TauonMusicBox/total?logo=github&label=GitHub)](https://github.com/Taiko2k/TauonMusicBox/releases) [![flathub](https://img.shields.io/flathub/downloads/com.github.taiko2k.tauonmb?logo=Flathub&label=Flathub)](https://flathub.org/apps/com.github.taiko2k.tauonmb) |
| [tsukimi ` ⚒️ `](https://github.com/tsukinaha/tsukimi) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/tsukinaha/tsukimi/total?logo=github&label=GitHub)](https://github.com/tsukinaha/tsukimi/releases) |


## 📱 Mobile

### iOS

| Name | OSS | Free | Paid | Downloads |
| ---- | --- | ---- | ---- | --------- |
| [Coppelia ` ⚒️ ` ` 🎵 `](https://github.com/j6k4m8/coppelia) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/j6k4m8/coppelia/total?logo=github&label=GitHub)](https://github.com/j6k4m8/coppelia/releases) |
| [Dee Jellie ` 🎵 `](https://www.deejellie.com) | ❌ | ❌ | ☑️ | [![App Store](https://img.shields.io/badge/App%20Store-grey?logo=App+Store&label=)](https://apps.apple.com/app/id6755585736) |
| [Discrete ` 🎵 `](https://discrete.app/) | ❌ | ✅ | ☑️ | [![App Store](https://img.shields.io/badge/App%20Store-grey?logo=App+Store&label=)](https://apps.apple.com/app/id6746067740) |
| [Filebar](https://fileball.app/) | ❌ | ✅ | ☑️ | [![App Store](https://img.shields.io/badge/App%20Store-grey?logo=App+Store&label=)](https://apps.apple.com/app/id1558391784) |
| [Finamp ` 🎵 `](https://github.com/jmshrv/finamp) | ✅ | ✅ | ❎ | [![Google Play](https://img.shields.io/badge/Google%20Play-grey?logo=Google+Play&label=)](https://play.google.com/store/apps/details?id=com.unicornsonlsd.finamp) [![App Store](https://img.shields.io/badge/App%20Store-grey?logo=App+Store&label=)](https://apps.apple.com/app/id1574922594) |
| [Finer ` 🎵 `](https://monk-studio.com/finer) | ❌ | ✅ | ❎ | [![App Store](https://img.shields.io/badge/App%20Store-grey?logo=App+Store&label=)](https://apps.apple.com/app/id6738301953) |
| [Fintunes ` 🎵 `](https://github.com/leinelissen/jellyfin-audio-player) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/leinelissen/jellyfin-audio-player/total?logo=github&label=GitHub)](https://github.com/leinelissen/jellyfin-audio-player/releases) [![F-Droid](https://img.shields.io/badge/F-Droid-grey?logo=F-Droid&label=)](https://f-droid.org/en/packages/nl.moeilijkedingen.jellyfinaudioplayer) [![Google Play](https://img.shields.io/badge/Google%20Play-grey?logo=Google+Play&label=)](https://play.google.com/store/apps/details?id=nl.moeilijkedingen.jellyfinaudioplayer) [![App Store](https://img.shields.io/badge/App%20Store-grey?logo=App+Store&label=)](https://apps.apple.com/app/id1527732194) |
| [Fladder](https://github.com/DonutWare/Fladder) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/DonutWare/Fladder/total?logo=github&label=GitHub)](https://github.com/DonutWare/Fladder/releases) [![Google Play](https://img.shields.io/badge/Google%20Play-grey?logo=Google+Play&label=)](https://play.google.com/store/apps/details?id=nl.jknaapen.fladder) |
| [HamHub](https://www.hamhub.app/) | ❌ | ✅ | ❎ | [![App Store](https://img.shields.io/badge/App%20Store-grey?logo=App+Store&label=)](https://apps.apple.com/app/id6458691598) |
| [Infuse](https://firecore.com/infuse) | ❌ | ✅ | ☑️ | [![App Store](https://img.shields.io/badge/App%20Store-grey?logo=App+Store&label=)](https://apps.apple.com/app/id1136220934) |
| [iPlay](https://github.com/saltpi/iPlay) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/saltpi/iPlay/total?logo=github&label=GitHub)](https://github.com/saltpi/iPlay/releases) [![App Store](https://img.shields.io/badge/App%20Store-grey?logo=App+Store&label=)](https://apps.apple.com/app/id6480576133) [![Amazon](https://img.shields.io/badge/Amazon-grey?logo=Amazon&label=)](https://www.amazon.com/gp/product/B0DB2KL58G) [![Microsoft Store](https://img.shields.io/badge/-grey?logo=&label=Microsoft+Store)](https://apps.microsoft.com/detail/9NBZ2BXD4WFZ) |
| [Jellify ` 🎵 `](https://github.com/Jellify-Music/App) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/Jellify-Music/App/total?logo=github&label=GitHub)](https://github.com/Jellify-Music/App/releases) [![TestFlight](https://img.shields.io/badge/App%20Store-grey?logo=App+Store&label=TestFlight)](https://testflight.apple.com/join/etVSc7ZQ) |
| [JellyBook ` 📖 `](https://github.com/JellyBookOrg/JellyBook) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/JellyBookOrg/JellyBook/total?logo=github&label=GitHub)](https://github.com/JellyBookOrg/JellyBook/releases) [![Izzysoft](https://img.shields.io/badge/-grey?logo=&label=Izzysoft)](https://apt.izzysoft.de/fdroid/index/apk/com.KaraWilson.JellyBook/) [![TestFlight](https://img.shields.io/badge/App%20Store-grey?logo=App+Store&label=TestFlight)](https://testflight.apple.com/join/lEXKY4Dl) |
| [Jellyfin Mobile for iOS ` 🔹 `](https://github.com/jellyfin/jellyfin-expo) | ✅ | ✅ | ❎ | [![App Store](https://img.shields.io/badge/App%20Store-grey?logo=App+Store&label=)](https://apps.apple.com/app/id1480192618) |
| [Jellyflix](https://github.com/jellyflix-app/jellyflix) | ✅ | ✅ | ❎ | [![Demo](https://img.shields.io/badge/Web-blue?logo=&label=Demo)](https://jellyflix.kiejon.com/) [![App Store](https://img.shields.io/badge/App%20Store-grey?logo=App+Store&label=)](https://apps.apple.com/app/id6476043683) [![github](https://img.shields.io/github/downloads/jellyflix-app/jellyflix/total?logo=github&label=GitHub)](https://github.com/jellyflix-app/jellyflix/releases) |
| [JellyTV](https://jellytv.app/en) | ❌ | ❌ | ☑️ | [![App Store](https://img.shields.io/badge/App%20Store-grey?logo=App+Store&label=)](https://apps.apple.com/app/id6752357290) |
| [Manet ` 🎵 `](https://tilo.dev/manet/) | ❌ | ✅ | ❎ | [![App Store](https://img.shields.io/badge/App%20Store-grey?logo=App+Store&label=)](https://apps.apple.com/app/id6470928235) |
| [Phyn](https://phyn.app) | ❌ | ✅ | ☑️ | [![Google Play](https://img.shields.io/badge/Google%20Play-grey?logo=Google+Play&label=)](https://play.google.com/store/apps/details?id=com.appsynergyts.phyn) [![App Store](https://img.shields.io/badge/App%20Store-grey?logo=App+Store&label=)](https://apps.apple.com/app/id6457674815) |
| [Plappa ` 🎵 `](https://github.com/LeoKlaus/plappa) | ✅ | ✅ | ❎ | [![App Store](https://img.shields.io/badge/App%20Store-grey?logo=App+Store&label=)](https://apps.apple.com/app/id6475201956) |
| [SenPlayer](https://apps.apple.com/app/id6443975850) | ❌ | ✅ | ☑️ | [![App Store](https://img.shields.io/badge/App%20Store-grey?logo=App+Store&label=)](https://apps.apple.com/app/id6443975850) |
| [Streamyfin](https://streamyfin.app) | ✅ | ✅ | ❎ | [![App Store](https://img.shields.io/badge/App%20Store-grey?logo=App+Store&label=)](https://apps.apple.com/app/id6593660679) [![TestFlight](https://img.shields.io/badge/App%20Store-grey?logo=App+Store&label=TestFlight)](https://testflight.apple.com/join/CWBaAAK2) [![Google Play](https://img.shields.io/badge/Google%20Play-grey?logo=Google+Play&label=)](https://play.google.com/store/apps/details?id=com.fredrikburmester.streamyfin) [![github](https://img.shields.io/github/downloads/fredrikburmester/streamyfin/total?logo=github&label=GitHub)](https://github.com/fredrikburmester/streamyfin/releases) |
| [Sunkfin](https://github.com/jackcrane/sunkfin) | ✅ | ✅ | ❎ | [![App Store](https://img.shields.io/badge/App%20Store-grey?logo=App+Store&label=)](https://apps.apple.com/app/id6743207349) |
| [Swiftfin ` 🔹 ` ` ⚒️ `](https://github.com/jellyfin/swiftfin) | ✅ | ✅ | ❎ | [![App Store](https://img.shields.io/badge/App%20Store-grey?logo=App+Store&label=)](https://apps.apple.com/app/id1604098728) |
| [VidHub](https://okaapps.com/product/1659622164) | ❌ | ✅ | ☑️ | [![Google Play](https://img.shields.io/badge/Google%20Play-grey?logo=Google+Play&label=)](https://play.google.com/store/apps/details?id=com.oumi.utility.media.hub) [![App Store](https://img.shields.io/badge/App%20Store-grey?logo=App+Store&label=)](https://apps.apple.com/app/id1659622164) |
| [yybx](https://yybpro.com) | ❌ | ❌ | ☑️ | [![App Store](https://img.shields.io/badge/App%20Store-grey?logo=App+Store&label=)](https://apps.apple.com/app/id1519723194) |


### Android

| Name | OSS | Free | Paid | Downloads |
| ---- | --- | ---- | ---- | --------- |
| [AFinity ` ⚒️ `](https://github.com/MakD/AFinity) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/MakD/AFinity/total?logo=github&label=GitHub)](https://github.com/MakD/AFinity/releases) |
| [AfuseKt](https://github.com/AttemptD/AfuseKt-release) | ❌ | ✅ | ☑️ | [![github](https://img.shields.io/github/downloads/AttemptD/AfuseKt-release/total?logo=github&label=GitHub)](https://github.com/AttemptD/AfuseKt-release/releases) |
| [Coppelia ` ⚒️ ` ` 🎵 `](https://github.com/j6k4m8/coppelia) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/j6k4m8/coppelia/total?logo=github&label=GitHub)](https://github.com/j6k4m8/coppelia/releases) |
| [Finamp ` 🎵 `](https://github.com/jmshrv/finamp) | ✅ | ✅ | ❎ | [![Google Play](https://img.shields.io/badge/Google%20Play-grey?logo=Google+Play&label=)](https://play.google.com/store/apps/details?id=com.unicornsonlsd.finamp) [![App Store](https://img.shields.io/badge/App%20Store-grey?logo=App+Store&label=)](https://apps.apple.com/app/id1574922594) |
| [Findroid ` ⚒️ `](https://github.com/jarnedemeulemeester/findroid) | ✅ | ✅ | ❎ | [![Izzysoft](https://img.shields.io/badge/-grey?logo=&label=Izzysoft)](https://apt.izzysoft.de/fdroid/index/apk/dev.jdtech.jellyfin) [![Google Play](https://img.shields.io/badge/Google%20Play-grey?logo=Google+Play&label=)](https://play.google.com/store/apps/details?id=dev.jdtech.jellyfin) [![F-Droid](https://img.shields.io/badge/F-Droid-grey?logo=F-Droid&label=)](https://f-droid.org/en/packages/dev.jdtech.jellyfin/) |
| [Fintunes ` 🎵 `](https://github.com/leinelissen/jellyfin-audio-player) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/leinelissen/jellyfin-audio-player/total?logo=github&label=GitHub)](https://github.com/leinelissen/jellyfin-audio-player/releases) [![F-Droid](https://img.shields.io/badge/F-Droid-grey?logo=F-Droid&label=)](https://f-droid.org/en/packages/nl.moeilijkedingen.jellyfinaudioplayer) [![Google Play](https://img.shields.io/badge/Google%20Play-grey?logo=Google+Play&label=)](https://play.google.com/store/apps/details?id=nl.moeilijkedingen.jellyfinaudioplayer) [![App Store](https://img.shields.io/badge/App%20Store-grey?logo=App+Store&label=)](https://apps.apple.com/app/id1527732194) |
| [Fladder](https://github.com/DonutWare/Fladder) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/DonutWare/Fladder/total?logo=github&label=GitHub)](https://github.com/DonutWare/Fladder/releases) [![Google Play](https://img.shields.io/badge/Google%20Play-grey?logo=Google+Play&label=)](https://play.google.com/store/apps/details?id=nl.jknaapen.fladder) |
| [Gelli ` 🎵 `](https://github.com/dkanada/gelli) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/dkanada/gelli/total?logo=github&label=GitHub)](https://github.com/dkanada/gelli/releases) [![F-Droid](https://img.shields.io/badge/F-Droid-grey?logo=F-Droid&label=)](https://f-droid.org/packages/com.dkanada.gramophone) |
| [Ghosten-Player](https://github.com/GhostenEditor/Ghosten-Player) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/GhostenEditor/Ghosten-Player/total?logo=github&label=GitHub)](https://github.com/GhostenEditor/Ghosten-Player/releases) |
| [Hills](https://play.google.com/store/apps/details?id=com.mountains.hills) | ❌ | ✅ | ☑️ | [![Google Play](https://img.shields.io/badge/Google%20Play-grey?logo=Google+Play&label=)](https://play.google.com/store/apps/details?id=com.mountains.hills) [![Microsoft Store](https://img.shields.io/badge/-grey?logo=&label=Microsoft+Store)](https://apps.microsoft.com/detail/9NXNZFRLLWZX) |
| [Jellify ` 🎵 `](https://github.com/Jellify-Music/App) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/Jellify-Music/App/total?logo=github&label=GitHub)](https://github.com/Jellify-Music/App/releases) [![TestFlight](https://img.shields.io/badge/App%20Store-grey?logo=App+Store&label=TestFlight)](https://testflight.apple.com/join/etVSc7ZQ) |
| [JellyBook ` 📖 `](https://github.com/JellyBookOrg/JellyBook) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/JellyBookOrg/JellyBook/total?logo=github&label=GitHub)](https://github.com/JellyBookOrg/JellyBook/releases) [![Izzysoft](https://img.shields.io/badge/-grey?logo=&label=Izzysoft)](https://apt.izzysoft.de/fdroid/index/apk/com.KaraWilson.JellyBook/) [![TestFlight](https://img.shields.io/badge/App%20Store-grey?logo=App+Store&label=TestFlight)](https://testflight.apple.com/join/lEXKY4Dl) |
| [JellyCine](https://github.com/sureshfizzy/JellyCine) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/sureshfizzy/JellyCine/total?logo=github&label=GitHub)](https://github.com/sureshfizzy/JellyCine/releases) |
| [Jellyfin for Android ` 🔹 `](https://github.com/jellyfin/jellyfin-android) | ✅ | ✅ | ❎ | [![F-Droid](https://img.shields.io/badge/F-Droid-grey?logo=F-Droid&label=)](https://f-droid.org/en/packages/org.jellyfin.mobile/) [![Amazon](https://img.shields.io/badge/Amazon-grey?logo=Amazon&label=)](https://www.amazon.com/gp/aw/d/B081RFTTQ9) [![Google Play](https://img.shields.io/badge/Google%20Play-grey?logo=Google+Play&label=)](https://play.google.com/store/apps/details?id=org.jellyfin.mobile) |
| [Jellyflix](https://github.com/jellyflix-app/jellyflix) | ✅ | ✅ | ❎ | [![Demo](https://img.shields.io/badge/Web-blue?logo=&label=Demo)](https://jellyflix.kiejon.com/) [![App Store](https://img.shields.io/badge/App%20Store-grey?logo=App+Store&label=)](https://apps.apple.com/app/id6476043683) [![github](https://img.shields.io/github/downloads/jellyflix-app/jellyflix/total?logo=github&label=GitHub)](https://github.com/jellyflix-app/jellyflix/releases) |
| [Phyn](https://phyn.app) | ❌ | ✅ | ☑️ | [![Google Play](https://img.shields.io/badge/Google%20Play-grey?logo=Google+Play&label=)](https://play.google.com/store/apps/details?id=com.appsynergyts.phyn) [![App Store](https://img.shields.io/badge/App%20Store-grey?logo=App+Store&label=)](https://apps.apple.com/app/id6457674815) |
| [Playtorrio](https://github.com/ayman708-UX/PlayTorrio) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/ayman708-UX/PlayTorrio/total?logo=github&label=GitHub)](https://github.com/ayman708-UX/PlayTorrio/releases) |
| [Reefin](https://reefin.dev/) | ✅ | ✅ | ❎ | [![Google Play](https://img.shields.io/badge/Google%20Play-grey?logo=Google+Play&label=)](https://play.google.com/store/apps/details?id=com.shady.reefin) [![github](https://img.shields.io/github/downloads/SKULSHADY/reefin/total?logo=github&label=GitHub)](https://github.com/SKULSHADY/reefin/releases) |
| [Streamyfin](https://streamyfin.app) | ✅ | ✅ | ❎ | [![App Store](https://img.shields.io/badge/App%20Store-grey?logo=App+Store&label=)](https://apps.apple.com/app/id6593660679) [![TestFlight](https://img.shields.io/badge/App%20Store-grey?logo=App+Store&label=TestFlight)](https://testflight.apple.com/join/CWBaAAK2) [![Google Play](https://img.shields.io/badge/Google%20Play-grey?logo=Google+Play&label=)](https://play.google.com/store/apps/details?id=com.fredrikburmester.streamyfin) [![github](https://img.shields.io/github/downloads/fredrikburmester/streamyfin/total?logo=github&label=GitHub)](https://github.com/fredrikburmester/streamyfin/releases) |
| [Symfonium ` ⚒️ ` ` 🎵 `](https://symfonium.app) | ❌ | ❌ | ☑️ | [![Google Play](https://img.shields.io/badge/Google%20Play-grey?logo=Google+Play&label=)](https://play.google.com/store/apps/details?id=app.symfonik.music.player) |
| [VidHub](https://okaapps.com/product/1659622164) | ❌ | ✅ | ☑️ | [![Google Play](https://img.shields.io/badge/Google%20Play-grey?logo=Google+Play&label=)](https://play.google.com/store/apps/details?id=com.oumi.utility.media.hub) [![App Store](https://img.shields.io/badge/App%20Store-grey?logo=App+Store&label=)](https://apps.apple.com/app/id1659622164) |
| [Void ` ⚒️ `](https://github.com/hritwikjohri/Void-for-jellyfin) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/hritwikjohri/Void-for-jellyfin/total?logo=github&label=GitHub)](https://github.com/hritwikjohri/Void-for-jellyfin/releases) [![github](https://img.shields.io/github/downloads/hritwikjohri/VoidTV-for-jellyfin/total?logo=github&label=GitHub)](https://github.com/hritwikjohri/VoidTV-for-jellyfin/releases) |
| Yamby | ❌ | ✅ | ☑️ | [![Google Play](https://img.shields.io/badge/Google%20Play-grey?logo=Google+Play&label=)](https://play.google.com/store/apps/details?id=com.hush.yamby) |


### Sailfish OS

| Name | OSS | Free | Paid | Downloads |
| ---- | --- | ---- | ---- | --------- |
| [Sailfin](https://github.com/heartfin/harbour-sailfin) | ✅ | ✅ | ❎ | [![OpenRepos](https://img.shields.io/badge/-grey?logo=&label=OpenRepos)](https://openrepos.net/content/ahappyhuman/sailfin) |


### HarmonyOS

| Name | OSS | Free | Paid | Downloads |
| ---- | --- | ---- | ---- | --------- |
| [FinMusic ` 🎵 `](https://github.com/OHPG/FinMusic) | ✅ | ✅ | ❎ | [![AppGallery](https://img.shields.io/badge/AppGallery-grey?logo=AppGallery&label=)](https://appgallery.huawei.com/app/detail?id=org.ohpg.fin.music) [![github](https://img.shields.io/github/downloads/OHPG/FinMusic/total?logo=github&label=GitHub)](https://github.com/OHPG/FinMusic/releases) |
| [FinVideo](https://github.com/OHPG/FinVideo) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/OHPG/FinVideo/total?logo=github&label=GitHub)](https://github.com/OHPG/FinVideo/releases) [![AppGallery](https://img.shields.io/badge/AppGallery-grey?logo=AppGallery&label=)](https://appgallery.huawei.com/app/detail?id=org.ohpg.fin.video) |


### Nintendo Switch

| Name | OSS | Free | Paid | Downloads |
| ---- | --- | ---- | ---- | --------- |
| [Switchfin ` ⚒️ `](https://github.com/dragonflylee/switchfin) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/dragonflylee/switchfin/total?logo=github&label=GitHub)](https://github.com/dragonflylee/switchfin/releases) |


## 📺 TV

### Apple TV

| Name | OSS | Free | Paid | Downloads |
| ---- | --- | ---- | ---- | --------- |
| [Dee Jellie ` 🎵 `](https://www.deejellie.com) | ❌ | ❌ | ☑️ | [![App Store](https://img.shields.io/badge/App%20Store-grey?logo=App+Store&label=)](https://apps.apple.com/app/id6755585736) |
| [Filebar](https://fileball.app/) | ❌ | ✅ | ☑️ | [![App Store](https://img.shields.io/badge/App%20Store-grey?logo=App+Store&label=)](https://apps.apple.com/app/id1558391784) |
| [HamHub](https://www.hamhub.app/) | ❌ | ✅ | ❎ | [![App Store](https://img.shields.io/badge/App%20Store-grey?logo=App+Store&label=)](https://apps.apple.com/app/id6458691598) |
| [Infuse](https://firecore.com/infuse) | ❌ | ✅ | ☑️ | [![App Store](https://img.shields.io/badge/App%20Store-grey?logo=App+Store&label=)](https://apps.apple.com/app/id1136220934) |
| JellySee | ❌ | ❌ | ☑️ | [![App Store](https://img.shields.io/badge/App%20Store-grey?logo=App+Store&label=)](https://apps.apple.com/app/id6748783768) |
| [Mediora](https://github.com/ghobs91/mediora) | ✅ | ✅ | ❎ | [![App Store](https://img.shields.io/badge/App%20Store-grey?logo=App+Store&label=)](https://apps.apple.com/app/id6757345487) |
| [MrMC](https://github.com/MrMC/mrmc) | ✅ | ✅ | ☑️ | [![Amazon](https://img.shields.io/badge/Amazon-grey?logo=Amazon&label=)](https://www.amazon.com/gp/product/B01ENT3I1Q/ref=mas_pm_mrmc) [![App Store](https://img.shields.io/badge/App%20Store-grey?logo=App+Store&label=)](https://apps.apple.com/app/id1059536415) [![Google Play](https://img.shields.io/badge/Google%20Play-grey?logo=Google+Play&label=)](https://play.google.com/store/apps/details?id=tv.mrmc.mrmc) |
| [SenPlayer](https://apps.apple.com/app/id6443975850) | ❌ | ✅ | ☑️ | [![App Store](https://img.shields.io/badge/App%20Store-grey?logo=App+Store&label=)](https://apps.apple.com/app/id6443975850) |
| [Swiftfin ` 🔹 ` ` ⚒️ `](https://github.com/jellyfin/swiftfin) | ✅ | ✅ | ❎ | [![App Store](https://img.shields.io/badge/App%20Store-grey?logo=App+Store&label=)](https://apps.apple.com/app/id1604098728) |
| [VidHub](https://okaapps.com/product/1659622164) | ❌ | ✅ | ☑️ | [![Google Play](https://img.shields.io/badge/Google%20Play-grey?logo=Google+Play&label=)](https://play.google.com/store/apps/details?id=com.oumi.utility.media.hub) [![App Store](https://img.shields.io/badge/App%20Store-grey?logo=App+Store&label=)](https://apps.apple.com/app/id1659622164) |
| [yybx](https://yybpro.com) | ❌ | ❌ | ☑️ | [![App Store](https://img.shields.io/badge/App%20Store-grey?logo=App+Store&label=)](https://apps.apple.com/app/id1519723194) |


### Android TV

| Name | OSS | Free | Paid | Downloads |
| ---- | --- | ---- | ---- | --------- |
| [AfuseKt TV](https://github.com/AttemptD/AfuseKtV-release) | ❌ | ❌ | ☑️ | [![github](https://img.shields.io/github/downloads/AttemptD/AfuseKtV-release/total?logo=github&label=GitHub)](https://github.com/AttemptD/AfuseKtV-release/releases) |
| [DUNE ` ⚒️ `](https://github.com/Sam42a/DUNE) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/Sam42a/DUNE/total?logo=github&label=GitHub)](https://github.com/Sam42a/DUNE/releases) |
| [Elefin](https://github.com/flex36ty/elefin) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/flex36ty/elefin/total?logo=github&label=GitHub)](https://github.com/flex36ty/elefin/releases) |
| [Fladder](https://github.com/DonutWare/Fladder) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/DonutWare/Fladder/total?logo=github&label=GitHub)](https://github.com/DonutWare/Fladder/releases) [![Google Play](https://img.shields.io/badge/Google%20Play-grey?logo=Google+Play&label=)](https://play.google.com/store/apps/details?id=nl.jknaapen.fladder) |
| [Ghosten-Player](https://github.com/GhostenEditor/Ghosten-Player) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/GhostenEditor/Ghosten-Player/total?logo=github&label=GitHub)](https://github.com/GhostenEditor/Ghosten-Player/releases) |
| [Jellyfin for Android TV ` 🔹 `](https://github.com/jellyfin/jellyfin-androidtv) | ✅ | ✅ | ❎ | [![Amazon](https://img.shields.io/badge/Amazon-grey?logo=Amazon&label=)](https://www.amazon.com/gp/aw/d/B07TX7Z725) [![Google Play](https://img.shields.io/badge/Google%20Play-grey?logo=Google+Play&label=)](https://play.google.com/store/apps/details?id=org.jellyfin.androidtv) |
| [Moonfin](https://github.com/Moonfin-Client) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/Moonfin-Client/AndroidTV-FireTV/total?logo=github&label=AndroidTV)](https://github.com/Moonfin-Client/AndroidTV-FireTV/releases) [![github](https://img.shields.io/github/downloads/Moonfin-Client/Roku/total?logo=github&label=Roku)](https://github.com/Moonfin-Client/Roku/releases) [![github](https://img.shields.io/github/downloads/Moonfin-Client/webOS/total?logo=github&label=webOS)](https://github.com/Moonfin-Client/webOS/releases) [![github](https://img.shields.io/github/downloads/Moonfin-Client/Tizen/total?logo=github&label=Tizen)](https://github.com/Moonfin-Client/Tizen/releases) [![Google Play](https://img.shields.io/badge/Google%20Play-grey?logo=Google+Play&label=)](https://play.google.com/store/apps/details?id=org.moonfin.androidtv) |
| [Reefin](https://reefin.dev/) | ✅ | ✅ | ❎ | [![Google Play](https://img.shields.io/badge/Google%20Play-grey?logo=Google+Play&label=)](https://play.google.com/store/apps/details?id=com.shady.reefin) [![github](https://img.shields.io/github/downloads/SKULSHADY/reefin/total?logo=github&label=GitHub)](https://github.com/SKULSHADY/reefin/releases) |
| [VidHub](https://okaapps.com/product/1659622164) | ❌ | ✅ | ☑️ | [![Google Play](https://img.shields.io/badge/Google%20Play-grey?logo=Google+Play&label=)](https://play.google.com/store/apps/details?id=com.oumi.utility.media.hub) [![App Store](https://img.shields.io/badge/App%20Store-grey?logo=App+Store&label=)](https://apps.apple.com/app/id1659622164) |
| [Void ` ⚒️ `](https://github.com/hritwikjohri/Void-for-jellyfin) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/hritwikjohri/Void-for-jellyfin/total?logo=github&label=GitHub)](https://github.com/hritwikjohri/Void-for-jellyfin/releases) [![github](https://img.shields.io/github/downloads/hritwikjohri/VoidTV-for-jellyfin/total?logo=github&label=GitHub)](https://github.com/hritwikjohri/VoidTV-for-jellyfin/releases) |
| [Wholphin](https://github.com/damontecres/Wholphin) | ✅ | ✅ | ❎ | [![Google Play](https://img.shields.io/badge/Google%20Play-grey?logo=Google+Play&label=)](https://play.google.com/store/apps/details?id=com.github.damontecres.wholphin) [![github](https://img.shields.io/github/downloads/damontecres/Wholphin/total?logo=github&label=GitHub)](https://github.com/damontecres/Wholphin/releases) |
| Yamby | ❌ | ✅ | ☑️ | [![Google Play](https://img.shields.io/badge/Google%20Play-grey?logo=Google+Play&label=)](https://play.google.com/store/apps/details?id=com.hush.yamby) |


### Kodi

| Name | OSS | Free | Paid | Downloads |
| ---- | --- | ---- | ---- | --------- |
| [JellyCon ` 🔹 `](https://github.com/jellyfin/jellycon) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/jellyfin/jellycon/total?logo=github&label=GitHub)](https://github.com/jellyfin/jellycon/releases) |
| [Jellyfin for Kodi ` 🔹 `](https://github.com/jellyfin/jellyfin-kodi) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/jellyfin/jellyfin-kodi/total?logo=github&label=GitHub)](https://github.com/jellyfin/jellyfin-kodi/releases) |


### Roku

| Name | OSS | Free | Paid | Downloads |
| ---- | --- | ---- | ---- | --------- |
| [Jellyfin for Roku ` 🔹 `](https://github.com/jellyfin/jellyfin-roku) | ✅ | ✅ | ❎ | [![Roku](https://img.shields.io/badge/Roku-grey?logo=Roku&label=)](https://channelstore.roku.com/details/592369/jellyfin) |
| [JellyRock](https://github.com/cewert/jellyrock) | ✅ | ✅ | ❎ | [![Roku](https://img.shields.io/badge/Roku-grey?logo=Roku&label=)](https://channelstore.roku.com/details/232f9e82db11ce628e3fe7e01382a330:a85d6e9e520567806e8dae1c0cabadd5/jellyrock) [![github](https://img.shields.io/github/downloads/cewert/jellyrock/total?logo=github&label=GitHub)](https://github.com/cewert/jellyrock/releases) |
| [Moonfin](https://github.com/Moonfin-Client) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/Moonfin-Client/AndroidTV-FireTV/total?logo=github&label=AndroidTV)](https://github.com/Moonfin-Client/AndroidTV-FireTV/releases) [![github](https://img.shields.io/github/downloads/Moonfin-Client/Roku/total?logo=github&label=Roku)](https://github.com/Moonfin-Client/Roku/releases) [![github](https://img.shields.io/github/downloads/Moonfin-Client/webOS/total?logo=github&label=webOS)](https://github.com/Moonfin-Client/webOS/releases) [![github](https://img.shields.io/github/downloads/Moonfin-Client/Tizen/total?logo=github&label=Tizen)](https://github.com/Moonfin-Client/Tizen/releases) [![Google Play](https://img.shields.io/badge/Google%20Play-grey?logo=Google+Play&label=)](https://play.google.com/store/apps/details?id=org.moonfin.androidtv) |


### Tizen

| Name | OSS | Free | Paid | Downloads |
| ---- | --- | ---- | ---- | --------- |
| [Jellyfin for Tizen ` 🔹 `](https://github.com/jellyfin/jellyfin-tizen) | ✅ | ✅ | ❎ | [Build It Yourself](https://github.com/jellyfin/jellyfin-tizen) |
| [Moonfin](https://github.com/Moonfin-Client) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/Moonfin-Client/AndroidTV-FireTV/total?logo=github&label=AndroidTV)](https://github.com/Moonfin-Client/AndroidTV-FireTV/releases) [![github](https://img.shields.io/github/downloads/Moonfin-Client/Roku/total?logo=github&label=Roku)](https://github.com/Moonfin-Client/Roku/releases) [![github](https://img.shields.io/github/downloads/Moonfin-Client/webOS/total?logo=github&label=webOS)](https://github.com/Moonfin-Client/webOS/releases) [![github](https://img.shields.io/github/downloads/Moonfin-Client/Tizen/total?logo=github&label=Tizen)](https://github.com/Moonfin-Client/Tizen/releases) [![Google Play](https://img.shields.io/badge/Google%20Play-grey?logo=Google+Play&label=)](https://play.google.com/store/apps/details?id=org.moonfin.androidtv) |


### webOS

| Name | OSS | Free | Paid | Downloads |
| ---- | --- | ---- | ---- | --------- |
| [Breezyfin ` ⚒️ `](https://github.com/botagas/Breezyfin) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/botagas/Breezyfin/total?logo=github&label=GitHub)](https://github.com/botagas/Breezyfin/releases) |
| [Jellyfin for WebOS ` 🔹 `](https://github.com/jellyfin/jellyfin-webos) | ✅ | ✅ | ❎ | [![LG](https://img.shields.io/badge/LG-grey?logo=LG&label=)](https://us.lgappstv.com/main/tvapp/detail?appId=1030579) |
| [Moonfin](https://github.com/Moonfin-Client) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/Moonfin-Client/AndroidTV-FireTV/total?logo=github&label=AndroidTV)](https://github.com/Moonfin-Client/AndroidTV-FireTV/releases) [![github](https://img.shields.io/github/downloads/Moonfin-Client/Roku/total?logo=github&label=Roku)](https://github.com/Moonfin-Client/Roku/releases) [![github](https://img.shields.io/github/downloads/Moonfin-Client/webOS/total?logo=github&label=webOS)](https://github.com/Moonfin-Client/webOS/releases) [![github](https://img.shields.io/github/downloads/Moonfin-Client/Tizen/total?logo=github&label=Tizen)](https://github.com/Moonfin-Client/Tizen/releases) [![Google Play](https://img.shields.io/badge/Google%20Play-grey?logo=Google+Play&label=)](https://play.google.com/store/apps/details?id=org.moonfin.androidtv) |


---

# By Type

## ` 🎵 ` Music Client

| Name | OSS | Free | Paid | Downloads |
| ---- | --- | ---- | ---- | --------- |
| [ampcast ` ⚒️ ` ` 🎵 `](https://github.com/rekkyrosso/ampcast) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/rekkyrosso/ampcast/total?logo=github&label=GitHub)](https://github.com/rekkyrosso/ampcast/releases) |
| [Coppelia ` ⚒️ ` ` 🎵 `](https://github.com/j6k4m8/coppelia) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/j6k4m8/coppelia/total?logo=github&label=GitHub)](https://github.com/j6k4m8/coppelia/releases) |
| [Dee Jellie ` 🎵 `](https://www.deejellie.com) | ❌ | ❌ | ☑️ | [![App Store](https://img.shields.io/badge/App%20Store-grey?logo=App+Store&label=)](https://apps.apple.com/app/id6755585736) |
| [Discrete ` 🎵 `](https://discrete.app/) | ❌ | ✅ | ☑️ | [![App Store](https://img.shields.io/badge/App%20Store-grey?logo=App+Store&label=)](https://apps.apple.com/app/id6746067740) |
| [Feishin ` ⚒️ ` ` 🎵 `](https://github.com/jeffvli/feishin) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/jeffvli/feishin/total?logo=github&label=GitHub)](https://github.com/jeffvli/feishin/releases) |
| [Finamp ` 🎵 `](https://github.com/jmshrv/finamp) | ✅ | ✅ | ❎ | [![Google Play](https://img.shields.io/badge/Google%20Play-grey?logo=Google+Play&label=)](https://play.google.com/store/apps/details?id=com.unicornsonlsd.finamp) [![App Store](https://img.shields.io/badge/App%20Store-grey?logo=App+Store&label=)](https://apps.apple.com/app/id1574922594) |
| [Finer ` 🎵 `](https://monk-studio.com/finer) | ❌ | ✅ | ❎ | [![App Store](https://img.shields.io/badge/App%20Store-grey?logo=App+Store&label=)](https://apps.apple.com/app/id6738301953) |
| [FinMusic ` 🎵 `](https://github.com/OHPG/FinMusic) | ✅ | ✅ | ❎ | [![AppGallery](https://img.shields.io/badge/AppGallery-grey?logo=AppGallery&label=)](https://appgallery.huawei.com/app/detail?id=org.ohpg.fin.music) [![github](https://img.shields.io/github/downloads/OHPG/FinMusic/total?logo=github&label=GitHub)](https://github.com/OHPG/FinMusic/releases) |
| [Fintunes ` 🎵 `](https://github.com/leinelissen/jellyfin-audio-player) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/leinelissen/jellyfin-audio-player/total?logo=github&label=GitHub)](https://github.com/leinelissen/jellyfin-audio-player/releases) [![F-Droid](https://img.shields.io/badge/F-Droid-grey?logo=F-Droid&label=)](https://f-droid.org/en/packages/nl.moeilijkedingen.jellyfinaudioplayer) [![Google Play](https://img.shields.io/badge/Google%20Play-grey?logo=Google+Play&label=)](https://play.google.com/store/apps/details?id=nl.moeilijkedingen.jellyfinaudioplayer) [![App Store](https://img.shields.io/badge/App%20Store-grey?logo=App+Store&label=)](https://apps.apple.com/app/id1527732194) |
| [Foxy ` 🎵 `](https://github.com/Devioxic/Foxy-Desktop) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/Devioxic/Foxy-Desktop/total?logo=github&label=GitHub)](https://github.com/Devioxic/Foxy-Desktop/releases) |
| [Gelli ` 🎵 `](https://github.com/dkanada/gelli) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/dkanada/gelli/total?logo=github&label=GitHub)](https://github.com/dkanada/gelli/releases) [![F-Droid](https://img.shields.io/badge/F-Droid-grey?logo=F-Droid&label=)](https://f-droid.org/packages/com.dkanada.gramophone) |
| [Gelly ` ⚒️ ` ` 🎵 `](https://github.com/Fingel/gelly) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/Fingel/gelly/total?logo=github&label=GitHub)](https://github.com/Fingel/gelly/releases) [![flathub](https://img.shields.io/flathub/downloads/io.m51.Gelly?logo=Flathub&label=Flathub)](https://flathub.org/apps/io.m51.Gelly) |
| [Jellify ` 🎵 `](https://github.com/Jellify-Music/App) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/Jellify-Music/App/total?logo=github&label=GitHub)](https://github.com/Jellify-Music/App/releases) [![TestFlight](https://img.shields.io/badge/App%20Store-grey?logo=App+Store&label=TestFlight)](https://testflight.apple.com/join/etVSc7ZQ) |
| [Jelly Music App ` 🎵 `](https://github.com/Stannnnn/jelly-app) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/Stannnnn/jelly-app/total?logo=github&label=GitHub)](https://github.com/Stannnnn/jelly-app/releases) |
| [Jellyamp ` 🎵 `](https://github.com/m0ngr31/jellyamp) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/m0ngr31/jellyamp/total?logo=github&label=GitHub)](https://github.com/m0ngr31/jellyamp/releases) |
| [Manet ` 🎵 `](https://tilo.dev/manet/) | ❌ | ✅ | ❎ | [![App Store](https://img.shields.io/badge/App%20Store-grey?logo=App+Store&label=)](https://apps.apple.com/app/id6470928235) |
| [Plappa ` 🎵 `](https://github.com/LeoKlaus/plappa) | ✅ | ✅ | ❎ | [![App Store](https://img.shields.io/badge/App%20Store-grey?logo=App+Store&label=)](https://apps.apple.com/app/id6475201956) |
| [Preserve ` ⚒️ ` ` 🎵 `](https://gitlab.com/preserve/preserve) | ✅ | ✅ | ❎ | [![GitLab](https://img.shields.io/badge/GitLab-grey?logo=GitLab&label=)](https://gitlab.com/preserve/preserve) [![Demo](https://img.shields.io/badge/Web-blue?logo=&label=Demo)](https://preserveplayer.com/) |
| [Sonixd ` ⚒️ ` ` 🎵 `](https://github.com/jeffvli/sonixd) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/jeffvli/sonixd/total?logo=github&label=GitHub)](https://github.com/jeffvli/sonixd/releases) |
| [sonixd ` ⚒️ ` ` 🎵 `](https://github.com/jeffvli/sonixd) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/jeffvli/sonixd/total?logo=github&label=GitHub)](https://github.com/jeffvli/sonixd/releases) |
| [Supersonic ` ⚒️ ` ` 🎵 `](https://github.com/dweymouth/supersonic) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/dweymouth/supersonic/total?logo=github&label=GitHub)](https://github.com/dweymouth/supersonic/releases) [![flathub](https://img.shields.io/flathub/downloads/io.github.dweymouth.supersonic?logo=Flathub&label=Flathub)](https://flathub.org/apps/io.github.dweymouth.supersonic) |
| [Symfonium ` ⚒️ ` ` 🎵 `](https://symfonium.app) | ❌ | ❌ | ☑️ | [![Google Play](https://img.shields.io/badge/Google%20Play-grey?logo=Google+Play&label=)](https://play.google.com/store/apps/details?id=app.symfonik.music.player) |
| [Tauon Music Box ` 🎵 `](https://github.com/Taiko2k/TauonMusicBox) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/Taiko2k/TauonMusicBox/total?logo=github&label=GitHub)](https://github.com/Taiko2k/TauonMusicBox/releases) [![flathub](https://img.shields.io/flathub/downloads/com.github.taiko2k.tauonmb?logo=Flathub&label=Flathub)](https://flathub.org/apps/com.github.taiko2k.tauonmb) |


## ` 📖 ` Reader

| Name | OSS | Free | Paid | Downloads |
| ---- | --- | ---- | ---- | --------- |
| [JellyBook ` 📖 `](https://github.com/JellyBookOrg/JellyBook) | ✅ | ✅ | ❎ | [![github](https://img.shields.io/github/downloads/JellyBookOrg/JellyBook/total?logo=github&label=GitHub)](https://github.com/JellyBookOrg/JellyBook/releases) [![Izzysoft](https://img.shields.io/badge/-grey?logo=&label=Izzysoft)](https://apt.izzysoft.de/fdroid/index/apk/com.KaraWilson.JellyBook/) [![TestFlight](https://img.shields.io/badge/App%20Store-grey?logo=App+Store&label=TestFlight)](https://testflight.apple.com/join/lEXKY4Dl) |


---

* **Official** ` 🔹 `
* **Beta** ` ⚒️ `
* **Music Client** ` 🎵 `
* **Reader** ` 📖 `

---

> [!NOTE]
> Please note that this Markdown file is automatically generated from the [`clients.yaml`](./assets/clients/clients.yaml) file.
> **Contributions should only be made by updating the `clients.yaml` file.**
> Any updates to the `.yaml` file will result in this Markdown file being re-generated to reflect those changes.

<!--
⚠️ WARNING: DO NOT EDIT THIS FILE ⚠️

This Markdown file is auto-generated from the `assets/clients/clients.yaml` file.
Any manual changes made to this file will be overwritten the next time it is generated.
To make changes, please edit the `assets/clients/clients.yaml` file and regenerate this Markdown file.
-->


================================================
FILE: CODE-OF-CONDUCT.md
================================================
# Contributor Covenant Code of Conduct

## Our Pledge

In the interest of fostering an open and welcoming environment, we as
contributors and maintainers pledge to making participation in our project and
our community a harassment-free experience for everyone, regardless of age, body
size, disability, ethnicity, gender identity and expression, level of experience,
nationality, personal appearance, race, religion, or sexual identity and
orientation.

## Our Standards

Examples of behavior that contributes to creating a positive environment
include:

* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members

Examples of unacceptable behavior by participants include:

* The use of sexualized language or imagery and unwelcome sexual attention or
advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic
  address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a
  professional setting

## Our Responsibilities

Project maintainers are responsible for clarifying the standards of acceptable
behavior and are expected to take appropriate and fair corrective action in
response to any instances of unacceptable behavior.

Project maintainers have the right and responsibility to remove, edit, or
reject comments, commits, code, wiki edits, issues, and other contributions
that are not aligned to this Code of Conduct, or to ban temporarily or
permanently any contributor for other behaviors that they deem inappropriate,
threatening, offensive, or harmful.

## Scope

This Code of Conduct applies both within project spaces and in public spaces
when an individual is representing the project or its community. Examples of
representing a project or community include using an official project e-mail
address, posting via an official social media account, or acting as an appointed
representative at an online or offline event. Representation of a project may be
further defined and clarified by project maintainers.

## Enforcement

Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported by contacting the project team at awesome-jellyfin@d2a.io. All
complaints will be reviewed and investigated and will result in a response that
is deemed necessary and appropriate to the circumstances. The project team is
obligated to maintain confidentiality with regard to the reporter of an incident.
Further details of specific enforcement policies may be posted separately.

Project maintainers who do not follow or enforce the Code of Conduct in good
faith may face temporary or permanent repercussions as determined by other
members of the project's leadership.

## Attribution

This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
available at [http://contributor-covenant.org/version/1/4][version]

[homepage]: http://contributor-covenant.org
[version]: http://contributor-covenant.org/version/1/4/


================================================
FILE: CONTRIBUTING.md
================================================
# Contribution Guidelines

Please note that this project is released with a [Contributor Code of Conduct](CODE-OF-CONDUCT.md). 
By participating in this project you agree to abide by its terms.

## Pull Requests

Ensure your pull request adheres to the following guidelines:

- Use the [Conventional Commits specification](https://www.conventionalcommits.org/en/v1.0.0/) (`<type>[optional scope]: <description>`).
- **Alphabetical Sorting**: Items in `README.md` must be sorted alphabetically. See [Sorting Rules](#sorting-rules).
- **Templated Content**: Some files, like `CLIENTS.md` are automatically generated from files. You should only edit the original source files from which they're generated from. See [Templated Content](#templated-content).
- Search previous suggestions before making a new one, as yours may be a duplicate.
- New categories, or improvements to the existing categorization are welcome.
- Keep descriptions short and simple, but descriptive and non-promotional.

Thank you for your suggestions!

---

## Project Criteria

To help maintain a useful and sustainable list, submitted projects are generally expected to meet the following guidelines. 
These are not strict requirements but serve as a guideline for new projects.

### Activity

* The project should be at least **4 weeks old**.
* The repository should show **recent and ongoing activity**.
* If automated checks are configured, they should be **passing on the default branch**.
* The project should show signs of **continued maintenance**.

### Quality & Documentation

Projects should meet baseline quality standards:

* A **clear and descriptive README** and/or documentation should be available.
* The commit history should reflect meaningful development activity.
* Contributors adding a project are encouraged to consider whether it is likely to remain maintained.
* **Small utilities or scripts should:**
  * Be broadly useful beyond a single use case.
  * Preferably be part of a larger project or collection if highly specific.
  * Avoid fragmenting the list into numerous minimal standalone scripts.

### Conduct

* Projects should not be associated with malicious, deceptive, or spam-related activity.
* Repositories should follow generally accepted open-source practices.

---

## Sorting Rules

Certain lists within this repository should be kept **alphabetically sorted**, according to a canonical version of each item. 
The rules for deriving this canonical version (used for sorting) are as follows:

1. **Square Brackets**:  
   - If the line contains text in square brackets (e.g., `- [My Item]`), only that bracketed text is used to determine the item's position.
   - If there are no square brackets, the entire line (minus the leading "`- `" if present) is used.
2. **Removing Characters**:  
   - From that resulting text, remove the following characters for sorting:
       ```
       [ -_().`',:!?]
       ```

If two items end up with the same canonical text, their **original order** is preserved. 

> [!NOTE]
> A bot will automatically check your PR for correct order.  
> > You can manually fix sorting or ask a maintainer to run `/sort-check -fix` (if needed), however, this may not work if the bot has no access to the _head_ repository.

## Templated Content

Some files in this repository are automatically generated from other source files. For example, `CLIENTS.md` is generated from `assets/clients/clients.yaml`.  
- **Do not edit these generated files directly.** Instead, edit the original source files from which they’re generated.  
- Each generated file clearly indicates that it is automatically generated.
- Once you push your changes to the source file, the project’s checks will automatically regenerate the corresponding output file.  

> [!NOTE]
> For pull requests, a preview of the updated generated files will appear in the **Checks** tab of the pull request.
> ![image](https://github.com/user-attachments/assets/5ca13a18-f68d-4dc5-b91b-caa9015132d0)


## Updating your PR

A lot of times, making a PR adhere to the standards above can be difficult.
If the maintainers notice anything that we'd like changed, we'll ask you to
edit your PR before we merge it. There's no need to open a new PR, just edit
the existing one. If you're not sure how to do that,
[here is a guide](https://github.com/RichardLitt/knowledge/blob/master/github/amending-a-commit-guide.md)
on the different ways you can update your PR so that we can merge it.


================================================
FILE: LICENSE
================================================
Creative Commons Legal Code

CC0 1.0 Universal

    CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE
    LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN
    ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS
    INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES
    REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS
    PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM
    THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED
    HEREUNDER.

Statement of Purpose

The laws of most jurisdictions throughout the world automatically confer
exclusive Copyright and Related Rights (defined below) upon the creator
and subsequent owner(s) (each and all, an "owner") of an original work of
authorship and/or a database (each, a "Work").

Certain owners wish to permanently relinquish those rights to a Work for
the purpose of contributing to a commons of creative, cultural and
scientific works ("Commons") that the public can reliably and without fear
of later claims of infringement build upon, modify, incorporate in other
works, reuse and redistribute as freely as possible in any form whatsoever
and for any purposes, including without limitation commercial purposes.
These owners may contribute to the Commons to promote the ideal of a free
culture and the further production of creative, cultural and scientific
works, or to gain reputation or greater distribution for their Work in
part through the use and efforts of others.

For these and/or other purposes and motivations, and without any
expectation of additional consideration or compensation, the person
associating CC0 with a Work (the "Affirmer"), to the extent that he or she
is an owner of Copyright and Related Rights in the Work, voluntarily
elects to apply CC0 to the Work and publicly distribute the Work under its
terms, with knowledge of his or her Copyright and Related Rights in the
Work and the meaning and intended legal effect of CC0 on those rights.

1. Copyright and Related Rights. A Work made available under CC0 may be
protected by copyright and related or neighboring rights ("Copyright and
Related Rights"). Copyright and Related Rights include, but are not
limited to, the following:

  i. the right to reproduce, adapt, distribute, perform, display,
     communicate, and translate a Work;
 ii. moral rights retained by the original author(s) and/or performer(s);
iii. publicity and privacy rights pertaining to a person's image or
     likeness depicted in a Work;
 iv. rights protecting against unfair competition in regards to a Work,
     subject to the limitations in paragraph 4(a), below;
  v. rights protecting the extraction, dissemination, use and reuse of data
     in a Work;
 vi. database rights (such as those arising under Directive 96/9/EC of the
     European Parliament and of the Council of 11 March 1996 on the legal
     protection of databases, and under any national implementation
     thereof, including any amended or successor version of such
     directive); and
vii. other similar, equivalent or corresponding rights throughout the
     world based on applicable law or treaty, and any national
     implementations thereof.

2. Waiver. To the greatest extent permitted by, but not in contravention
of, applicable law, Affirmer hereby overtly, fully, permanently,
irrevocably and unconditionally waives, abandons, and surrenders all of
Affirmer's Copyright and Related Rights and associated claims and causes
of action, whether now known or unknown (including existing as well as
future claims and causes of action), in the Work (i) in all territories
worldwide, (ii) for the maximum duration provided by applicable law or
treaty (including future time extensions), (iii) in any current or future
medium and for any number of copies, and (iv) for any purpose whatsoever,
including without limitation commercial, advertising or promotional
purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each
member of the public at large and to the detriment of Affirmer's heirs and
successors, fully intending that such Waiver shall not be subject to
revocation, rescission, cancellation, termination, or any other legal or
equitable action to disrupt the quiet enjoyment of the Work by the public
as contemplated by Affirmer's express Statement of Purpose.

3. Public License Fallback. Should any part of the Waiver for any reason
be judged legally invalid or ineffective under applicable law, then the
Waiver shall be preserved to the maximum extent permitted taking into
account Affirmer's express Statement of Purpose. In addition, to the
extent the Waiver is so judged Affirmer hereby grants to each affected
person a royalty-free, non transferable, non sublicensable, non exclusive,
irrevocable and unconditional license to exercise Affirmer's Copyright and
Related Rights in the Work (i) in all territories worldwide, (ii) for the
maximum duration provided by applicable law or treaty (including future
time extensions), (iii) in any current or future medium and for any number
of copies, and (iv) for any purpose whatsoever, including without
limitation commercial, advertising or promotional purposes (the
"License"). The License shall be deemed effective as of the date CC0 was
applied by Affirmer to the Work. Should any part of the License for any
reason be judged legally invalid or ineffective under applicable law, such
partial invalidity or ineffectiveness shall not invalidate the remainder
of the License, and in such case Affirmer hereby affirms that he or she
will not (i) exercise any of his or her remaining Copyright and Related
Rights in the Work or (ii) assert any associated claims and causes of
action with respect to the Work, in either case contrary to Affirmer's
express Statement of Purpose.

4. Limitations and Disclaimers.

 a. No trademark or patent rights held by Affirmer are waived, abandoned,
    surrendered, licensed or otherwise affected by this document.
 b. Affirmer offers the Work as-is and makes no representations or
    warranties of any kind concerning the Work, express, implied,
    statutory or otherwise, including without limitation warranties of
    title, merchantability, fitness for a particular purpose, non
    infringement, or the absence of latent or other defects, accuracy, or
    the present or absence of errors, whether or not discoverable, all to
    the greatest extent permissible under applicable law.
 c. Affirmer disclaims responsibility for clearing rights of other persons
    that may apply to the Work or any use thereof, including without
    limitation any person's Copyright and Related Rights in the Work.
    Further, Affirmer disclaims responsibility for obtaining any necessary
    consents, permissions or other rights required for any use of the
    Work.
 d. Affirmer understands and acknowledges that Creative Commons is not a
    party to this document and has no duty or obligation with respect to
    this CC0 or use of the Work.


================================================
FILE: README.md
================================================
<!--lint disable awesome-heading awesome-toc double-link-->

<p align="center">
  <img src="/assets/banner.png" />
  <h1 align="center">Awesome Jellyfin</h1>
</p>


<blockquote align="center"> A List of Awesome Jellyfin Themes and Plugins</blockquote>

<p align="center">
[
  <a href="#-plugins">Plugins</a> •
  <a href="#%EF%B8%8F-metadata-providers">Metadata Providers</a> •
  <a href="THEMES.md">Themes</a> •
  <a href="CLIENTS.md">Clients</a> •
  <a href="#-other">Other</a> •
  <a href="#-snippets">Snippets</a> •
  <a href="#-related">Related</a> •
  <a href="#contribute">Contribute</a>
]
</p>


## 🧩 Plugins

<!-- sort list:plugins -->
- [Gelato](https://github.com/lostb1t/Gelato) - Replaces Jellyfin's default search with Stremio-powered results and can automatically import entire catalogs into your library through scheduled tasks.
- [HoverTrailer](https://github.com/Fovty/HoverTrailer) - Displays movie trailers on hover.
- [InPlayerEpisodePreview](https://github.com/Namo2/InPlayerEpisodePreview) - Adds an episode list to the video player.
- [intro-skipper](https://github.com/intro-skipper/intro-skipper) - Fingerprint audio to automatically detect intro and outro segments in Jellyfin.
- [jellyfin-ani-sync](https://github.com/vosmiic/jellyfin-ani-sync) - Automatically tracks and synchronizes anime watching progress between Jellyfin and [Anilist](https://anilist.co/) and other services.
- [jellyfin-editors-choice-plugin](https://github.com/lachlandcp/jellyfin-editors-choice-plugin) - Adds a Netflix-style, full-width content slider to the home page to feature selected content.
- [Jellyfin-Enhanced](https://github.com/n00bcodr/Jellyfin-Enhanced) - Adds keyboard shortcuts, subtitle styling, TMDB reviews, Jellyseerr search and request integration, and other improvements to Jellyfin.
- [jellyfin-icon-metadata](https://github.com/Druidblack/jellyfin-icon-metadata) - Adds metadata provider icons to Jellyfin.
- [Jellyfin Ignore](https://github.com/fdett/jellyfin-ignore/) - Ignore filename patterns on library scans. `🔹 Beta` `🔸 Stale`
- [Jellyfin-JavaScript-Injector](https://github.com/n00bcodr/Jellyfin-JavaScript-Injector) - Inject custom JavaScript into the Jellyfin UI without modifying index.html.
- [jellyfin-local-posters](https://github.com/NooNameR/Jellyfin.Plugin.LocalPosters/) - Automatically matches and imports local posters using TPDb and MediUX filename formats. Also supports syncing posters from Google Drive.
- [Jellyfin-MonWUI-Plugin](https://github.com/G-grbz/Jellyfin-MonWUI-Plugin) - UI enhancement toolkit for Jellyfin providing customizable sliders, hover trailers, a music player, notifications, and other interface modules.
- [jellyfin-musictags-plugin](https://github.com/jyourstone/jellyfin-musictags-plugin) - Automatically extracts audio file metadata and converts it into standard Jellyfin tags.
- [Jellyfin-Newsletter](https://github.com/Sanidhya30/Jellyfin-Newsletter) - Sends newsletters and notifications about library changes (additions, updates, deletions) via email, Discord, or Telegram.
- [Jellyfin-Newsletter-Plugin](https://github.com/Cloud9Developer/Jellyfin-Newsletter-Plugin) - Newsletters for recently added media. `🔹 Beta` `🔸 Stale`
- [jellyfin-plugin-air-times](https://github.com/apteryxxyz/jellyfin-plugin-air-times) - Provides localized series air times based on server location.
- [jellyfin-plugin-AnimeMultiSource](https://github.com/webbster64/jellyfin-plugin-AnimeMultiSource) - Aggregates anime metadata, tags, artwork, and people from multiple sources (AniList, AniDB, MAL/Jikan, TVDB, Fanart.tv) with rate limiting and persistent caching for large libraries.
- [jellyfin-plugin-animethemes](https://github.com/EusthEnoptEron/jellyfin-plugin-animethemes) - Fetches anime opening and ending themes from [AnimeThemes.moe](https://animethemes.moe/), supporting both audio and video.
- [jellyfin-plugin-auto-collections](https://github.com/KeksBombe/jellyfin-plugin-auto-collections) - Automatically creates and maintains dynamic collections based on flexible criteria.
- [jellyfin-plugin-cinemamode](https://github.com/CherryFloors/jellyfin-plugin-cinemamode) - A plugin that allows users to enable Jellyfin's Cinema Mode functionality with local trailers and pre-rolls.
- [jellyfin-plugin-collection-import](https://github.com/lostb1t/jellyfin-plugin-collection-import) - Create and sort collections by importing from external sources like *mdblist*.
- [jellyfin-plugin-collection-sections](https://github.com/IAmParadox27/jellyfin-plugin-collection-sections) - Adds additional sections to `jellyfin-plugin-home-sections` for collections and playlists.
- [jellyfin-plugin-custom-tabs](https://github.com/IAmParadox27/jellyfin-plugin-custom-tabs) - Add personalized tabs in jellyfin-web for quick access to custom content.
- [jellyfin-plugin-discontinue-watching](https://github.com/jon4hz/jellyfin-plugin-discontinue-watching) - Lets you remove items from the Continue Watching list without resetting watch progress, with optional auto-hide after inactivity.
- [jellyfin-plugin-DiscordNotifier](https://github.com/cedev-1/jellyfin-plugin-DiscordNotifier) - Send notifications of Jellyfin server events to Discord.
- [jellyfin-plugin-enigma2](https://github.com/knackebrot/jellyfin-plugin-enigma2) - Supports Vu+ & Enigma2 live TV streamers. `🔸 Stale`
- [jellyfin-plugin-GetAvatar](https://github.com/cedev-1/jellyfin-plugin-GetAvatar) - Allows users to choose an avatar from a collection of images.
- [jellyfin-plugin-home-sections](https://github.com/IAmParadox27/jellyfin-plugin-home-sections) - Allows users to customize the jellyfin-web home screen with dynamic sections like "Because You Watched" and "Latest Movies".
- [jellyfin-plugin-jellysleep](https://github.com/jon4hz/jellyfin-plugin-jellysleep) - Adds sleep timer functionality to Jellyfin.
- [Jellyfin.Plugin.JF_To_Stash_Sync](https://github.com/Druidblack/Jellyfin.Plugin.JF_To_Stash_Sync) - Synchronizes viewing activity with Stash.
- [jellyfin-plugin-languageTags](https://github.com/TheXaman/jellyfin-plugin-languageTags) - Adds language tags to media based on audio tracks using FFmpeg.
- [jellyfin-plugin-ldapauth](https://github.com/jellyfin/jellyfin-plugin-ldapauth) - Allows the use of ldap as an auth provider.
- [jellyfin-plugin-letterboxd-sync](https://github.com/Gizmo091/jellyfin-plugin-letterboxd-sync) - Automatically syncs your watched movie history with Letterboxd.
- [jellyfin-plugin-listenbrainz](https://github.com/lyarenei/jellyfin-plugin-listenbrainz) - Automatically syncs your music activity with ListenBrainz.
- [jellyfin-plugin-localrecs](https://github.com/rdpharr/jellyfin-plugin-localrecs) - Generates personalized movie and TV recommendations based on local watch history without external services required.
- [Jellyfin.Plugin.MDBList_Ratings](https://github.com/Druidblack/Jellyfin.Plugin.MDBList_Ratings) - Retrieves ratings from MDBList using TMDb IDs and integrates them into Jellyfin's rating fields, with optional UI enhancements to display ratings from multiple sources.
- [jellyfin-plugin-media-bar](https://github.com/IAmParadox27/jellyfin-plugin-media-bar) - A Featured Content Bar to show off your media collection.
- [jellyfin-plugin-media-cleaner](https://github.com/shemanaev/jellyfin-plugin-media-cleaner) - Automatically removes played media after a specified time period.
- [jellyfin-plugin-MediathekViewDL](https://github.com/CatNoir2006/jellyfin-plugin-MediathekViewDL) - Integrates MediathekViewDL into Jellyfin and allows users to search, download, and manage content.
- [jellyfin-plugin-meilisearch](https://github.com/arnesacnussem/jellyfin-plugin-meilisearch) - Enhances Jellyfin search speed and accuracy by offloading queries to a Meilisearch instance.
- [jellyfin-plugin-onepace](https://github.com/jwueller/jellyfin-plugin-onepace) - Plugin for the [One Pace](https://onepace.net) project.
- [jellyfin-plugin-pages](https://github.com/IAmParadox27/jellyfin-plugin-pages) - Enables other plugins to create custom Jellyfin pages that match the native UI.
- [jellyfin-plugin-provider-stuff](https://github.com/kamilkosek/jellyfin-plugin-provider-stuff) - Automates tagging library items with streaming provider tags, creates collections per provider.
- [jellyfin-plugin-ratings](https://github.com/K3ntas/jellyfin-plugin-ratings) - Adds user ratings, card overlays, media requests, deletion workflows, chat, and new media notifications to Jellyfin.
- [jellyfin-plugin-skin-manager](https://github.com/danieladov/jellyfin-plugin-skin-manager) - Helps you to download and install skins. `🔸 Stale`
- [jellyfin-plugin-sso](https://github.com/9p4/jellyfin-plugin-sso) - Allows users to sign in through an SSO provider. `🔹 Beta`
- [Jellyfin.Plugin.StreamLimit](https://github.com/JellyboxAD/Jellyfin.Plugin.StreamLimit) - Allows limiting the number of simultaneous streams per user.
- [jellyfin-plugin-streamyfin](https://github.com/streamyfin/jellyfin-plugin-streamyfin) - Companion plugin for Streamyfin which allows for a centralized configuration of the Streamyfin application.
- [jellyfin-plugin-TelegramNotifier](https://github.com/RomainPierre7/jellyfin-plugin-TelegramNotifier) - Receive notifications of Jellyfin server events via Telegram.
- [jellyfin-powertoys](https://github.com/lennykean/jellyfin-powertoys) - A collection of plugins to enhance Jellyfin with additional features and tools.
- [Jellyfin-Roulette](https://github.com/ztffn/Jellyfin-Roulette) - Adds a roulette feature that plays a random entry from a playlist.
- [jellyfin-rpc by *kennethsible*](https://github.com/kennethsible/jellyfin-rpc) - Displays your current Jellyfin activity directly on Discord.
- [jellyfin-rpc by *Radiicall*](https://github.com/Radiicall/jellyfin-rpc) - Displays your current Jellyfin activity directly on Discord.
- [Jellyfin-Seasonals](https://github.com/CodeDevMLH/Jellyfin-Seasonals) - A jellyfin plugin with collections of seasonal themes/animations.
- [jellyfin-smartlists-plugin](https://github.com/jyourstone/jellyfin-smartlists-plugin) - Creates dynamic collections and playlists in Jellyfin that automatically update based on customizable rules as the library changes.
- [jellyfin-transcode-nag](https://github.com/voc0der/jellyfin-transcode-nag) - Nags users when they're transcoding due to unsupported formats or codecs, while allowing bitrate-based transcoding.
- [JellyfinTweaks](https://github.com/n00bcodr/JellyfinTweaks) - Override Jellyfin settings such as *Enable Backdrops* and *Enable Theme Music* across all devices.
- [Jellyfin-Xtream-Library](https://github.com/firestaerter3/Jellyfin-Xtream-Library) - Syncs Xtream VOD and Series content to native Jellyfin libraries via STRM files, with automatic metadata lookup and Live TV support.
- [jellynext](https://github.com/luall0/jellynext) - Creates per-user virtual libraries for personalized Trakt recommendations and new seasons.
- [jellyscrub](https://github.com/nicknsy/jellyscrub) - Smooth mouse-over video scrubbing previews. `🔸 Stale`
  <!--lint ignore list-item-indent awesome-list-item-->
    -  **NOTE:** Jellyfin 10.9 now natively supports trickplay.
- [JellySTRMprobe](https://github.com/firestaerter3/JellySTRMprobe) - Probes STRM files to extract media information (codec, resolution, duration, audio) that Jellyfin skips during library scans.
- [media-upload-plugin](https://github.com/grandguyjs/media-upload-plugin) - Media-manager that provides uploads, bulk downloads from URLs, and directory browsing within Jellyfin.
- [MyAnimeSync](https://github.com/iankiller77/MyAnimeSync) - Automatically synchronizes anime watching progress between Jellyfin and MyAnimeList.
- [playlist-generator](https://github.com/Eeeeelias/playlist-generator) - Create personal playlists based on your listening history.
- [Plexyfin](https://github.com/cleverdevil/plexyfin) - Automatically synchronize artwork and collections from your Plex Media Server to Jellyfin. Useful for users of Kometa.
- [Shokofin](https://github.com/ShokoAnime/Shokofin) - A Jellyfin plugin to integrate [Jellyfin](https://jellyfin.org/docs/) with [Shoko Server](https://shokoanime.com/downloads/shoko-server/).
- [Static Assets](https://github.com/cleverdevil/jelly-static-assets) - Upload and serve static assets such as CSS, JavaScript, and images directly from Jellyfin.
- [TeleJelly](https://github.com/hexxone/TeleJelly) - Allows users to sign in through the [Telegram Login Widget](https://core.telegram.org/widgets/login).
- [TheDwarfsHammer](https://github.com/Kamoba/jellyfin-plugin-thedwarfshammer) - Enhanced collection management and content discovery for Jellyfin.


#### 🏷️ Metadata Providers

<!-- sort list:metadata-providers -->
- [jellyfin-plugin-hikka](https://github.com/HotMasya/jellyfin-plugin-hikka) - Metadata and images for anime and manga from the Hikka website.
- [jellyfin-plugin-itunes](https://github.com/lyarenei/jellyfin-plugin-itunes) - A Jellyfin plugin that fetches album and artist metadata from Apple Music.
- [jellyfin-plugin-kinopoisk](https://github.com/LinFor/jellyfin-plugin-kinopoisk) - Metadata provider for [Kinopoisk](https://www.kinopoisk.ru/).
- [jellyfin-plugin-myanimelist](https://github.com/ryandash/jellyfin-plugin-myanimelist) - Provides MyAnimeList metadata for anime.
- [Jellyfin Plugin PhoenixAdult](https://github.com/DirtyRacer1337/Jellyfin.Plugin.PhoenixAdult) - Metadata provider helps fill Jellyfin/Emby with information for your adult videos by pulling from the original site.
- [jellyfin-plugin-shikimori](https://github.com/te9c/jellyfin-plugin-shikimori) - Metadata provider for shikimori.one.
- [Jellyfin Plugin Stash](https://github.com/DirtyRacer1337/Jellyfin.Plugin.Stash) - Metadata provider for [Stash](https://github.com/stashapp/stash).
- [Jellyfin Plugin ThePornDB](https://github.com/ThePornDatabase/Jellyfin.Plugin.ThePornDB) - Metadata provider for ThePornDB.
- [jellyfin-youtube-metadata-plugin](https://github.com/ankenyr/jellyfin-youtube-metadata-plugin) - YouTube Metadata Plugin.


## 🖌️ Themes

👉 Moved themes to [THEMES.md](THEMES.md)

## 📺 Clients

👉 Moved clients to [CLIENTS.md](CLIENTS.md)

## 👾 Other

<!-- sort list:other -->
- [Anchorr](https://github.com/openVESSL/Anchorr) - Discord bot for Jellyfin media requests and new content notifications.
- [aphrodite](https://github.com/jackkerouac/aphrodite) - Enhances media library posters with quality indicators like resolution, audio codec, and review ratings. `🔸 Stale`
- [AudioBookRequest](https://github.com/markbeep/AudioBookRequest) - A request management tool for audiobooks on Plex, Jellyfin, and Audiobookshelf.
- [AudioMuse-AI](https://github.com/NeptuneHub/AudioMuse-AI) - Sonic analysis and AI-powered clustering to create smart, tempo and mood-based playlists using the Jellyfin API.
- [autopulse](https://github.com/dan-online/autopulse) - A lightweight automation service that updates Plex, Jellyfin, and Emby libraries based on notifications from media organizers like Sonarr and Radarr.
- [autoscan](https://github.com/Cloudbox/autoscan) - Replaces the default Plex and Emby behaviour for picking up changes on the file system. `🔸 Stale`
- [bazarr-jellyfin](https://github.com/enoch85/bazarr-jellyfin) - Search and download subtitles directly from Jellyfin's native subtitle UI using your Bazarr instance.
- [CineSync](https://github.com/sureshfizzy/CineSync) - A Python based library management tool designed to organize debrid & local libraries without the support of Sonarr & Radarr.
- [content-recommender](https://github.com/jeffersoncgo/content-recommender) - Webpage that suggests Movies or Shows from your library based on your watch history.
- [CoverMaker](https://github.com/jeffersoncgo/CoverMaker) - Allows designing and generating custom cover images for your media collections.
- [declarative-jellyfin](https://github.com/Sveske-Juice/declarative-jellyfin) - Declarative configuration of your Jellyfin server on NixOS. `🔹 Beta`
- [embyToLocalPlayer](https://github.com/kjtsune/embyToLocalPlayer) - Lets you watch videos from Jellyfin using a local video player (like VLC and MPV) and syncs watch progress back.
- [Fixarr](https://github.com/sachinsenal0x64/FIXARR) - Media Renamer and Backup tool. (Backup still WIP) `🔹 Beta`
- [jelly-clipper](https://github.com/arnolicious/jelly-clipper) - A web application for creating, sharing, and managing video clips from your Jellyfin media library. `🔹 Beta`
- [Jellycord](https://github.com/SiddheshDongare/Jellycord) - A Discord companion bot for managing your JFA-GO instance.
- [Jellyfin-Auto-Collections](https://github.com/ghomasHudson/Jellyfin-Auto-Collections) - A tool to automatically make and update collections based on internet lists such as IMDb and letterboxd.
- [Jellyfin-Cover-Maker](https://github.com/KartoffelChipss/Jellyfin-Cover-Maker) - A website to easily create consistent covers and posters for your Jellyfin libraries.
- [JellyfinEasyMetadataManager](https://github.com/CesarBianchi/JellyfinEasyMetadataManager) - A desktop tool for managing and editing metadata in Jellyfin libraries.
- [Jellyfin-Image-Exporter](https://github.com/Kurotaku-sama/Jellyfin-Image-Exporter) - A script to export images (posters, banners, thumbnails) from your Jellyfin media server's metadata library.
- [jellyfinmanager](https://github.com/Forceu/jellyfinmanager) - A command-line tool for managing Jellyfin watched status, featuring backup/restore capabilities and missing episode detection using TVDB.
- [jellyfin-mods](https://github.com/BobHasNoSoul/jellyfin-mods) - A collection of things you can do to personalize Jellyfin.
- [Jellyfin Notification System](https://github.com/Fahmula/jellyfin-telegram-notifier) - Sends Telegram notifications with media images whenever a new movie, series, season, or episode is added to Jellyfin. `🔸 Stale`
- [jellyfin-on-macos](https://github.com/Digital-Shane/jellyfin-on-macos) - Guide for hosting Jellyfin on macOS with dynamic DNS, geo-filtering, and monitoring dashboards.
- [jellyfin-poster-hrd-logo](https://github.com/Druidblack/jellyfin-poster-hrd-logo/tree/main) - Automatically downloads covers for HDR movies from TMDb and applies an HDR logo in the top-right corner.
- [jellyfin_ratings](https://github.com/Druidblack/jellyfin_ratings) - Replaces Jellyfin ratings with ratings from various sources (IMDb, Trakt, Imdb, Letterboxd, etc.).
- [jellyfin-rewind](https://github.com/Chaphasilor/jellyfin-rewind) - A *Spotify Wrapped*-like app made for people who use Jellyfin for listening to music.
- [Jellyfin Segment Editor](https://github.com/intro-skipper/segment-editor) - Manage Jellyfin Media Segment positions.
- [jellyfin-telegram-channel-sync](https://github.com/GeiserX/jellyfin-telegram-channel-sync) - Syncs Jellyfin user access with Telegram channel membership, automatically disabling accounts when members leave.
- [jellyfin-theme-music-manager](https://github.com/akhilmulpurii/jellyfin-theme-music-manager) - A web application for managing theme songs and backdrop videos for your Jellyfin media library.
- [jellyfin-tools](https://github.com/eebette/jellyfin-tools) - This library is to generate images with Jellyfin-like styling (shadow overlay and library title text) from source images.
- [Jellyfin Update Poster](https://github.com/Iceshadow1404/JellyfinUpdatePoster) - Handles ZIP files containing multiple cover images from [ThePosterDB](https://theposterdb.com/) and [MediUX](https://mediux.pro). Set Downloader for [MediUX](https://mediux.pro).
- [jellyfin-updoot](https://github.com/BobHasNoSoul/jellyfin-updoot) - Adds thumbs-up recommendations, per-item comments, and a "recommended by users" page.
- [jellyfin-watch-updater](https://github.com/Simon-Eklundh/jellyfin-watch-updater) - Updates `lastPlayedDate` for watched items when clients fail to set it, enabling tools such as media cleanup plugins to correctly detect watched media.
- [jellyhub](https://github.com/Zigl3ur/jellyhub) - A web app that indexes media from multiple Jellyfin servers into a single searchable hub, letting you see which server hosts the content you're looking for.
- [Jellyman](https://github.com/Smiley-McSmiles/jellyman) - A CLI Program for installing and managing Jellyfin.
- [JellyPlex-Watched](https://github.com/luigi311/JellyPlex-Watched) - Syncs watch history between Jellyfin, Plex, and Emby Servers.
- [jellyplist](https://github.com/kamilkosek/jellyplist) - Utility for syncing Spotify playlists to Jellyfin. `🔹 Beta`
- [JellyRoller](https://github.com/LSchallot/JellyRoller) - A CLI Jellyfin Controller. `🔹 Beta`
- [JellySearch](https://gitlab.com/DomiStyle/jellysearch) - A fast full-text search proxy for Jellyfin using Meilisearch.
- [jellyseerr](https://github.com/Fallenbagel/jellyseerr) - A request management and media discovery tool.
- [Jellystat](https://github.com/CyferShepard/Jellystat) - A free and open source Statistics App for Jellyfin.
- [Jellyswarrm](https://github.com/LLukas22/Jellyswarrm) - Reverse proxy that lets you combine multiple Jellyfin servers into one virtual instance.
- [jellysweep](https://github.com/jon4hz/jellysweep) - A smart cleanup tool for your Jellyfin media server. It automatically removes old, unwatched movies and TV shows by analyzing your viewing history and user requests.
- [jellytools](https://github.com/cleverdevil/jellytools) - A CLI tool for synchronizing artwork and collections to Jellyfin from Plex and to generate and embed customizable animated library card videos in the Jellyfin UI.
- [jelly-watch-wise](https://github.com/Joker-KP/jelly-watch-wise) - A standalone app that monitors and enforces Jellyfin watch time limits per user, with API integration and a simple GUI.
- [jfa-go](https://github.com/hrfee/jfa-go) - User- / Invite-Management system for Jellyfin.
- [jf-avatars](https://github.com/kalibrado/jf-avatars) - Allows users to select avatars from an image gallery.
- [KefinTweaks](https://github.com/ranaldsgift/KefinTweaks) - A collection of enhancements and customizations.
- [List-Sync](https://github.com/Woahai321/list-sync) - Automatically import movies and TV shows from IMDB or Trakt lists into [Jellyseerr](https://github.com/Fallenbagel/jellyseerr). `🔹 Beta`
- [mnamer](https://github.com/jkwill87/mnamer) - Highly customizable tool to automatically rename all media files. `🔸 Stale`
- [Multi-User Media Cleaner](https://github.com/terrelsa13/MUMC) - Query and delete unwanted media content from your Jellyfin server.
- [MusicBrainz-UserScripts](https://github.com/Druidblack/MusicBrainz-UserScripts) - One-click importing of album from Jellyfin into MusicBrainz.
- [OpenSubtitlesDownload](https://github.com/emericg/OpenSubtitlesDownload) - Automatically or manually download subtitles using CLI/Gnome/KDE.
- [pixelfin](https://github.com/nothing2obvi/pixelfin) - Lets you quickly see which image types are present, missing, or low resolution in your Jellyfin libraries. You can also save images in embedded HTML files or ZIP archives.
- [Playlifin](https://gitlab.com/Krafting/playlifin-gtk) - Converts YouTube Music playlists to Jellyfin playlists.
- [Posterizarr](https://github.com/fscorrupt/Posterizarr) - Automates the creation of high-quality posters, backgrounds, and title cards for Plex, Jellyfin, and Emby with customizable overlays and direct uploads.
- [PPJF](https://github.com/Damocles-fr/PPJF) - Allows launching PotPlayer from Jellyfin Web.
- [reiverr](https://github.com/aleksilassila/reiverr) - Combined interface for JF, TMDB, Radarr and Sonarr. `🔹 Beta`
- [Samsung-Jellyfin-Installer](https://github.com/Jellyfin2Samsung/Samsung-Jellyfin-Installer) - Cross-platform tool that helps you install Jellyfin on Samsung Smart TVs running Tizen OS.
- [scenepeek-android](https://github.com/Divinelink/scenepeek-android) - An Android app that provides detailed movie and TV show information with TMDB and Jellyseerr integration.
- [speedrr](https://github.com/itschasa/speedrr) - Change your torrent client's upload speed dynamically, on certain events such as when a Plex/Jellyfin stream starts.
- [Squishy](https://github.com/cleverdevil/squishy) - Transcode and download your Jellyfin media with fully customizable presets and hardware acceleration.
- [streamystats](https://github.com/fredrikburmester/streamystats) - Statistics service for Jellyfin, providing analytics and data visualization.
- [subgen](https://github.com/McCloudS/subgen) - Autogenerate subtitles using OpenAI Whisper Model via Jellyfin.
- [SuggestArr](https://github.com/giuseppe99barchetta/SuggestArr) - Automatically request suggested movies and TV shows to [Jellyseerr](https://github.com/Fallenbagel/jellyseerr) based on recently watched.
- [swiparr](https://github.com/m3sserstudi0s/swiparr) - Swipe through your library, match with friends in a session, and find something everyone wants to watch.
- [TitleCardMaker](https://github.com/CollinHeist/TitleCardMaker) - Automated title card maker for Plex, Jellyfin, and Emby.
- [trailarr](https://github.com/nandyalu/trailarr) - Manages trailer downloads for your Radarr and Sonarr libraries.
- [trailerfin](https://github.com/Pukabyte/trailerfin) - Automatically retrieves and creates STRM links to IMDb trailers and places them in the backdrops folder to view trailers on the details page.
- [tunarr](https://github.com/chrisbenincasa/tunarr) - Create custom live TV channels from your Plex or Jellyfin library with a web UI and IPTV support.
- [Universal Plugin Repo](https://github.com/0belous/universal-plugin-repo) - Consolidates many plugin repositories to create a universal catalogue.
- [whatseerr](https://github.com/sufxgit/whatseerr) - WhatsApp bot for Seerr that allows users to search and request media via WhatsApp messages.
- [wizarr](https://github.com/Wizarrrr/wizarr) - Advanced user invitation and management system.
- [xsrv.jellyfin](https://github.com/nodiscc/xsrv/tree/master/roles/jellyfin) - Ansible role to deploy and configure Jellyfin.
- [ytdlp2STRM](https://github.com/fe80Grau/ytdlp2STRM) - Streams YouTube, Twitch and more via yt-dlp to Jellyfin.
- [ytdl-sub](https://github.com/jmbannon/ytdl-sub) - Automate downloading and metadata generation with YoutubeDL.


#### 📜 Snippets

<!--lint ignore awesome-list-item-->
- [snippets/language-overlay](snippets/language-overlay) - A script to add flags to movie posters.

## 🌌 Related

This section includes software, guides and tools that are not *specifically* designed to work with Jellyfin, but can be useful for tasks related to media management or to enhance Jellyfin's functionality.

<!-- sort list:related -->
- [calibre2jellyfin](https://github.com/shawn61cp/calibre2jellyfin) - Python script to construct a Jellyfin ebook library from a Calibre library.
- [Cloud Seeder](https://github.com/ipv6rslimited/cloudseeder) - A 1-click installer and maintainer for Jellyfin on Windows, Mac and Linux.
- [Dispatcharr](https://github.com/Dispatcharr/Dispatcharr) - Self-hosted M3U proxy with IPTV, EPG, and VOD management support.
- [ErsatzTV](https://github.com/ErsatzTV/ErsatzTV) - Stream custom live channels using your own media. `🔹 Beta`
- [Explo](https://github.com/LumePart/Explo) - Automated music discovery tool that recommended tracks based on your listening history.
- [locatarr](https://github.com/Locatarr/Locatarr) - A list of tools used to automate the downloading and organization of media files.
    - [radarr](https://github.com/Radarr/Radarr) - Automates downloading & management of movies.
    - [sonarr](https://github.com/Sonarr/Sonarr) - Automates downloading & management of TV series.
    - [tdarr](https://github.com/HaveAGitGat/Tdarr) - Distributed transcode automation + Library analytics + Video health checking. `🔺 Paid`
    - [recyclarr](https://github.com/recyclarr/recyclarr) - Automatically sync TRaSH guides to Sonarr and Radarr instances.
- [MediaTracker](https://github.com/bonukai/MediaTracker) - Media tracker and user rating platform with [Jellyfin integration](https://github.com/bonukai/jellyfin-plugin-mediatracker).
- [Movary](https://github.com/leepeuker/movary) - Media tracker and user rating platform. `🔹 Beta`
- [Multi Scrobbler](https://github.com/foxxmd/multi-scrobbler) - Scrobbles music from many sources to many clients. `🔹 Beta`
- [Quasarr](https://github.com/rix1337/Quasarr) - Emulates a usenet indexer and download client to allow direct downloads with sonarr/radarr.
- [rffmpeg](https://github.com/joshuaboniface/rffmpeg) - A remote FFmpeg wrapper, commonly used for transcoding media on more capable machines.
- [Threadfin](https://github.com/Threadfin/Threadfin) - M3U proxy for Jellyfin (Based on xTeVe).
- [TRaSH Guides](https://trash-guides.info/) - Easy-to-understand guides for Sonarr, Radarr, and Bazarr, along with related tools.
- [watchstate](https://github.com/ArabCoders/watchstate) - Sync play state between different media servers.

## Communities

This section contains links to communities which focus on Jellyfin or related topics.

<!-- list:communities -->
- [Jellyfin Discord](https://discord.gg/zHBxVSXdBV) - The official Jellyfin Discord server. `🔰 Official`
- [Jellyfin Forum](https://forum.jellyfin.org/) - The official Jellyfin forum. `🔰 Official`
- [Jellyfin Matrix](https://matrix.to/#/#jellyfinorg:matrix.org) - The official Jellyfin Matrix server. `🔰 Official`
- [r/Jellyfin](https://www.reddit.com/r/jellyfin/) - The official Jellyfin subreddit. `🔰 Official`
- [r/JellyfinCommunity](https://www.reddit.com/r/JellyfinCommunity/) - An independent, community-run subreddit.
- [JellyfinCommunity Discord](https://discord.gg/MTM8dkjr93) - An independent, community-run Discord server.

## Contribute

Contributions welcome! But please read the [contribution guidelines](CONTRIBUTING.md) first.
You can also [create a new issue](https://github.com/awesome-jellyfin/awesome-jellyfin/issues/new).



================================================
FILE: THEMES.md
================================================
<p align="center">
  <img src="assets/banner.png" />
  <h1 align="center"><a href="https://github.com/awesome-jellyfin/awesome-jellyfin">Awesome Jellyfin</a> > Themes</h1>
</p>

The preview / screenshots were taken directly from the linked repositories.
If an image is no longer available or out of date, please create an [issue](https://github.com/awesome-jellyfin/awesome-jellyfin/issues) or a [PR](https://github.com/awesome-jellyfin/awesome-jellyfin/edit/main/THEMES.md).

## [better-jellyfin-ui](https://github.com/tromoSM/better-jellyfin-ui) by tromoSM

A refined and modern UI enhancement for Jellyfin focused on improved layout, animations, and iOS design. [` 🔵 Get this Theme `](https://github.com/tromoSM/better-jellyfin-ui)

<table>
  <tr>
    <td>
      <img src="https://github.com/tromoSM/better-jellyfin-ui/blob/main/Assets/desktop-main.png?raw=true" />
    </td>
    <td>
      <img src="https://github.com/tromoSM/better-jellyfin-ui/blob/main/Assets/desktop-library-i.png?raw=true" />
    </td>
  </tr>
    <tr>
    <td>
      <img src="https://github.com/tromoSM/better-jellyfin-ui/blob/main/Assets/desktop-or.png?raw=true" />
    </td>
    <td>
      <img src="https://github.com/tromoSM/better-jellyfin-ui/blob/main/Assets/desktop-player.png?raw=true" />
    </td>
  </tr>
    <tr>
    <td>
      <img src="https://github.com/tromoSM/better-jellyfin-ui/blob/main/Assets/desktop-admin.png?raw=true" />
    </td>
  </tr>
</table>

---

## [catppuccin](https://github.com/catppuccin/jellyfin) by catppuccin

[` 🔵 Get this Theme `](https://github.com/catppuccin/jellyfin)

<table>
  <tr>
    <td>
      <img src="https://github.com/catppuccin/jellyfin/raw/main/assets/latte.webp" />
    </td>
    <td>
      <img src="https://github.com/catppuccin/jellyfin/raw/main/assets/frappe.webp" />
    </td>
  </tr>
  <tr>
    <td>
      <img src="https://github.com/catppuccin/jellyfin/raw/main/assets/macchiato.webp" />
    </td>
    <td>
      <img src="https://github.com/catppuccin/jellyfin/raw/main/assets/mocha.webp" />
    </td>
  </tr>
</table>

---

## [ElegantFin](https://github.com/lscambo13/ElegantFin) by lscambo13

[` 🔵 Get this Theme `](https://github.com/lscambo13/ElegantFin)

<table>
  <tr>
    <td>
      <img src="https://github.com/lscambo13/ElegantFin/blob/main/Previews/previews-v25.08.02/optimized/desktop/4.%20Movie%20Page.webp?raw=true" />
    </td>
    <td>
      <img src="https://github.com/lscambo13/ElegantFin/blob/main/Previews/previews-v25.08.02/optimized/desktop/1.%20Homepage.webp?raw=true" />
    </td>
  </tr>
  <tr>
    <td>
      <img src="https://github.com/lscambo13/ElegantFin/blob/main/Previews/previews-v25.08.02/optimized/desktop/3.%20Sidebar.webp?raw=true" />
    </td>
    <td>
      <img src="https://github.com/lscambo13/ElegantFin/blob/main/Previews/previews-v25.08.02/optimized/desktop/9.%20Web%20Player.webp?raw=true" />
    </td>
  </tr>
  <tr>
    <td>
      <img src="https://github.com/lscambo13/ElegantFin/blob/main/Previews/previews-v25.08.02/optimized/desktop/20.%20Live%20TV%20Guide.webp?raw=true" />
    </td>
    <td>
      <img src="https://github.com/lscambo13/ElegantFin/blob/main/Previews/previews-v25.08.02/optimized/desktop/12.%20Movie%20Details.webp?raw=true" />
    </td>
  </tr>
</table>

---

## [evergarden](https://github.com/everviolet/jellyfin) by everviolet

[` 🔵 Get this Theme `](https://github.com/everviolet/jellyfin)

<table>
  <tr>
    <td>
      <img src="https://github.com/everviolet/jellyfin/raw/main/assets/summer.webp" />
    </td>
    <td>
      <img src="https://github.com/everviolet/jellyfin/raw/main/assets/spring.webp" />
    </td>
  </tr>
  <tr>
    <td>
      <img src="https://github.com/everviolet/jellyfin/raw/main/assets/fall.webp" />
    </td>
    <td>
      <img src="https://github.com/everviolet/jellyfin/raw/main/assets/winter.webp" />
    </td>
  </tr>
</table>

---

## [finimalism](https://github.com/tedhinklater/finimalism) by tedhinklater

[` 🔵 Get this Theme `](https://github.com/tedhinklater/finimalism)

<table>
  <tr>
    <td>
        <img src="https://github.com/user-attachments/assets/caaa8d3a-c3f1-46d7-8a51-4ba6f08c047f" />
    </td>
    <td>
        <img src="https://github.com/user-attachments/assets/b2c1e0ca-0304-47d6-b4cc-3f77ac83f806" />
    </td>
  </tr>
</table>

---

## [Flow](https://github.com/LitCastVlog/Flow) by LitCastVlog

[` 🔵 Get this Theme `](https://github.com/LitCastVlog/Flow)

<table>
  <tr>
    <td>
      <img src="https://github.com/LitCastVlog/Flow/raw/main/images/screen.jpg" />
    </td>
    <td>
      <img src="https://github.com/LitCastVlog/Flow/raw/main/images/details.png" />
    </td>
  </tr>
  <tr>
    <td>
      <img src="https://github.com/LitCastVlog/Flow/raw/main/images/episodegrid-outline.gif" />
    </td>
    <td>
      <img src="https://github.com/LitCastVlog/Flow/raw/main/images/blue.png" />
    </td>
  </tr>
</table>

---

## [Finity](https://github.com/prism2001/finity) by prism2001

[` 🔵 Get this Theme `](https://github.com/prism2001/finity)

<table>
  <tr>
    <td>
      <img src="https://github.com/prism2001/finity/raw/main/screenshots/home_featured.png" />
    </td>
    <td>
      <img src="https://github.com/prism2001/finity/raw/main/screenshots/home_drawers.png" />
    </td>
  </tr>
  <tr>
    <td>
      <img src="https://github.com/prism2001/finity/raw/main/screenshots/show_season.png" />
    </td>
    <td>
      <img src="https://github.com/prism2001/finity/raw/main/screenshots/movie.png" />
    </td>
  </tr>
</table>

---

## [infinitv](https://github.com/buesche87/infinitv) by buesche87

[` 🔵 Get this Theme `](https://github.com/buesche87/infinitv)

<table>
  <tr>
    <td>
      <img src="https://github.com/user-attachments/assets/8e61244a-38e7-49f2-b6c6-5cbdd2dc03a8" />
    </td>
    <td>
      <img src="https://github.com/user-attachments/assets/0bc4337c-ce95-45d1-985a-081cfdd15388" />
    </td>
  </tr>
  <tr>
    <td>
      <img src="https://github.com/user-attachments/assets/dbaff509-a708-4e26-9a0b-52cc804288d0" />
    </td>
    <td>
      <img src="https://github.com/user-attachments/assets/2d548971-aa17-4f6a-9f2c-3e327a203f3a" />
    </td>
  </tr>
  <tr>
    <td>
      <img src="https://github.com/user-attachments/assets/bd4afc57-9031-4226-b650-8626dfafcdcd" />
    </td>
    <td>
      <img src="https://github.com/user-attachments/assets/78d2378b-17e1-4a13-895c-9352a6d293b8" />
    </td>
  </tr>
</table>

---

## [Jamfin](https://github.com/JamsRepos/Jamfin) by JamsRepos

Bringing a modern, sleek glassmorphism design to Jellyfin, enhancing your media server's aesthetics. [` 🔵 Get this Theme `](https://github.com/JamsRepos/Jamfin)

<table>
  <tr>
    <td>
      <img src="https://github.com/JamsRepos/Jamfin/raw/main/assets/screenshots/home.jpg" />
    </td>
    <td>
      <img src="https://github.com/JamsRepos/Jamfin/raw/main/assets/screenshots/details.jpg" />
    </td>
  </tr>
  <tr>
    <td>
      <img src="https://github.com/JamsRepos/Jamfin/raw/main/assets/screenshots/library.jpg" />
    </td>
    <td>
      <img src="https://github.com/JamsRepos/Jamfin/raw/main/assets/screenshots/admin.jpg" />
    </td>
  </tr>
</table>

---

## [JellySkin](https://github.com/prayag17/JellySkin) by prayag17

Vibrante & Minimal theme using custom icons and more [` 🔵 Get this Theme `](https://github.com/prayag17/JellySkin)

<table>
  <tr>
    <td>
      <img src="https://user-images.githubusercontent.com/55829513/200134094-9bafba9d-4cfa-48c3-bbf4-e01bc21ecdd1.png" />
    </td>
    <td>
      <img src="https://user-images.githubusercontent.com/55829513/200134098-6463a6e7-95bb-4af6-a451-b6ac5ef7abad.png" />
    </td>
  </tr>
  <tr>
    <td>
      <img src="https://user-images.githubusercontent.com/55829513/200133209-413d6e6c-3569-4aaf-9db7-f576c141f519.png" />
    </td>
    <td>
      <img src="https://user-images.githubusercontent.com/55829513/200133240-075f604d-ae7f-48cb-9a42-445d8f3ef427.png" />
    </td>
  </tr>
  <tr>
    <td>
      <img src="https://user-images.githubusercontent.com/55829513/200133258-4eabfc3d-475f-4b42-a496-bc2de60c11a5.png" />
    </td>
    <td>
      <img src="https://user-images.githubusercontent.com/55829513/200133302-5d7e7ac1-201b-4cb4-a839-ee53c5c6a6f2.png" />
    </td>
  </tr>
</table>

---

## [Jellyfin Better Styles](https://github.com/Tetrax-10/jellyfin-better-styles) by Tetrax-10

This theme preserves the original aesthetics while upgrading layout and animations for a more polished look and feel.

Better Movie/TV page layout, improved card animation on hover. [` 🔵 Get this Theme `](https://github.com/Tetrax-10/jellyfin-better-styles)

<table>
  <tr>
    <td>
      <img src="https://raw.githubusercontent.com/Tetrax-10/jellyfin-better-styles/main/assets/movie-tv-page.png" />
    </td>
    <td>
      <img src="https://raw.githubusercontent.com/Tetrax-10/jellyfin-better-styles/main/assets/cards.gif" />
    </td>
  </tr>
</table>

---

## [NeutralFin](https://github.com/KartoffelChipss/NeutralFin) by KartoffelChipss

NeutralFin is a custom Jellyfin theme based on [lscambo13's ElegantFin](https://github.com/lscambo13/ElegantFin), featuring a sleek black and grey color scheme for a more neutral and modern look. [` 🔵 Get this Theme `](https://github.com/KartoffelChipss/NeutralFin)

<table>
  <tr>
    <td>
      <img src="https://github.com/KartoffelChipss/NeutralFin/raw/main/assets/neutralfin-movie2.webp" />
    </td>
    <td>
      <img src="https://github.com/KartoffelChipss/NeutralFin/raw/main/assets/neutralfin-home.webp" />
    </td>
  </tr>
  <tr>
    <td>
      <img src="https://github.com/KartoffelChipss/NeutralFin/raw/main/assets/neutralfin-movies.webp" />
    </td>
    <td>
      <img src="https://github.com/KartoffelChipss/NeutralFin/raw/main/assets/neutralfin-movie.webp" />
    </td>
  </tr>
</table>

---

## [Ultrachromic](https://github.com/CTalvio/Ultrachromic) by CTalvio

The final form, the true evolution of the chromic theme saga [` 🔵 Get this Theme `](https://github.com/CTalvio/Ultrachromic)

> **Note**: There are several variations of the theme, for a more detailed overview, see the [Ultrachromic README](https://github.com/CTalvio/Ultrachromic#readme).

<table>
  <tr>
    <td>
      <img src="https://user-images.githubusercontent.com/4365015/127774204-03957527-7178-4ea2-8674-d83fe6a97d1c.png" />
    </td>
    <td>
      <img src="https://user-images.githubusercontent.com/4365015/127768733-c86aee2c-3bff-4b78-be54-003823d60276.png" />
    </td>
  </tr>
  <tr>
    <td>
      <img src="https://user-images.githubusercontent.com/4365015/127768970-e827c7e4-f4ce-4229-a68a-b2e87a723ef0.png" />
    </td>
    <td>
      <img src="https://user-images.githubusercontent.com/4365015/127778994-ddee8235-6bb2-42ae-a8b1-f9023dc69398.png" />
    </td>
  </tr>
</table>

---

## [scyfin](https://github.com/loof2736/scyfin) by loof2736

Custom CSS theme for Jellyfin with support for backdrops and themes [` 🔵 Get this Theme `](https://github.com/loof2736/scyfin)

<table>
  <tr>
    <td>
      <img src="https://github.com/loof2736/scyfin/raw/main/images/homepage.png" />
    </td>
    <td>
      <img src="https://github.com/loof2736/scyfin/raw/main/images/homepage-backdrops.png" />
    </td>
  </tr>
  <tr>
    <td>
      <img src="https://github.com/loof2736/scyfin/raw/main/images/details.png" />
    </td>
    <td>
      <img src="https://github.com/loof2736/scyfin/raw/main/images/details-backdrops.png" />
    </td>
  </tr>
  <tr>
    <td>
      <img src="https://github.com/loof2736/scyfin/raw/main/images/dashboard.png" />
    </td>
    <td>
      <img src="https://github.com/loof2736/scyfin/raw/main/images/login.png" />
    </td>
  </tr>
</table>
<table align="center">
  <tr>
    <td>
      <img src="https://github.com/loof2736/scyfin/raw/main/images/seafoam.png" />
    </td>
    <td>
      <img src="https://github.com/loof2736/scyfin/raw/main/images/coral.png" />
    </td>
    <td>
      <img src="https://github.com/loof2736/scyfin/raw/main/images/snow.png" />
    </td>
  </tr>
</table>

---

## [ZestyTheme](https://github.com/stpnwf/ZestyTheme/) by stpnwf

A minimal and elegant theme for Jellyfin [` 🔵 Get this Theme `](https://github.com/stpnwf/ZestyTheme/)

<table>
  <tr>
    <td>
      <img src="https://github.com/stpnwf/ZestyTheme/blob/main/images/home.jpg" />
    </td>
    <td>
      <img src="https://github.com/stpnwf/ZestyTheme/raw/main/images/nice-guys.jpg" />
    </td>
  </tr>
  <tr>
    <td>
      <img src="https://github.com/stpnwf/ZestyTheme/blob/main/images/avatar.jpg" />
    </td>
    <td>
      <img src="https://github.com/stpnwf/ZestyTheme/blob/main/images/player.jpg" />
    </td>
  </tr>
  <tr>
    <td>
      <img src="https://github.com/stpnwf/ZestyTheme/blob/main/images/login.jpg" />
    </td>
    <td>
      <img src="https://github.com/stpnwf/ZestyTheme/blob/main/images/phone.jpg" />
    </td>
  </tr>
</table>

---

## [zombie-release](https://github.com/MakD/zombie-release) by MakD

A theme for Jellyfin 10.9.x combining the best from the Public Themes [` 🔵 Get this Theme `](https://github.com/MakD/zombie-release)

<table>
  <tr>
    <td>
      <img src="https://github.com/MakD/zombie-release/blob/main/img/desktop/login.png" />
    </td>
    <td>
      <img src="https://github.com/MakD/zombie-release/blob/main/img/desktop/homepage.png?raw=true" />
    </td>
  </tr>
  <tr>
    <td>
      <img src="https://github.com/MakD/zombie-release/blob/main/img/desktop/detail.png?raw=true" />
    </td>
    <td>
      <img src="https://github.com/MakD/zombie-release/blob/main/img/desktop/sidebar.png?raw=true" />
    </td>
  </tr>
  <tr>
    <td>
      <img src="https://github.com/MakD/zombie-release/blob/main/img/desktop/tv-series.png?raw=true" />
    </td>
    <td>
      <img src="https://github.com/MakD/zombie-release/blob/main/img/desktop/seasonpage.png?raw=true" />
    </td>
  </tr>
</table>

---

<!--lint ignore unordered-list-marker-style-->
* Stale / Inactive / May not work anymore ` 📅 `

---

<p align="center">
  <strong>
    👉 Back to <a href="https://github.com/awesome-jellyfin/awesome-jellyfin">awesome-jellyfin/awesome-jellyfin</a>
  </strong>
</p>


================================================
FILE: assets/DateCheck.sh
================================================
#!/bin/bash

# Check if a GitHub API token is provided
if [ "$#" -ne 2 ] || [ "$1" != "-api" ]; then
    echo -e "${RED}Usage:>${NOCOLOR} $0 -api <github-api-token>"
    exit 1
fi

API_TOKEN=$2
API_HEADER="Authorization: token $API_TOKEN"
README_PATH="../README.md"
SIX_MONTHS=$(date -d "6 months ago" +%s)
PROPOSED_CHANGES=()

# Color codes for console output
GREEN='\033[0;32m'
RED='\033[0;31m'
YELLOW='\033[1;33m'
NOCOLOR='\033[0m'

# Check if README.md exists
if [ ! -f "$README_PATH" ]; then
    echo -e "${RED}README.md not found in path:${NOCOLOR} $README_PATH"
    exit 1
fi

# Parse README.md and collect information
while IFS= read -r line; do
    original_text=$(echo "$line" | sed -E 's/^- \[([^]]+)\].*/\1/')
    text=$(echo "$original_text" | sed -E 's/ `[^`]+`//g') # Remove existing indicators
    url=$(echo "$line" | sed -E 's/.*\]\(([^)]+)\).*/\1/')

    if [[ $url == https://github.com* ]]; then
        repo_path=$(echo $url | cut -d/ -f4-5)
        response=$(curl -s -H "$API_HEADER" "https://api.github.com/repos/$repo_path")

        # Fetch additional details for forked repositories
        is_fork=$(echo $response | grep '"fork": true')
        if [ ! -z "$is_fork" ]; then
            parent_repo=$(echo $response | grep '"parent":' | grep -o '"full_name": "[^"]*"' | cut -d '"' -f 4)
            if [ ! -z "$parent_repo" ]; then
                parent_response=$(curl -s -H "$API_HEADER" "https://api.github.com/repos/$parent_repo")
                response=$parent_response
            fi
        fi

        # Get the latest commit date
        commits_url=$(echo $response | grep '"commits_url":' | sed -E 's/.*"commits_url": "([^"]+)".*/\1/')
        commits_url="${commits_url/\{\/sha\}/}"
        latest_commit=$(curl -s -H "$API_HEADER" "${commits_url}?per_page=1")
        last_commit_date=$(echo $latest_commit | grep '"date":' | head -1 | sed -E 's/.*"date": "([^"]+)".*/\1/' | cut -c 1-10)
        last_commit_sec=$(date -d "$last_commit_date" +%s)

        # Compare with six months ago
        if [[ $last_commit_sec -lt $SIX_MONTHS && ! $original_text == *📅* ]]; then
            PROPOSED_CHANGES+=("$original_text - Date: $last_commit_date - URL: $url")
        fi
    fi
done < <(grep '^-\ \[' "$README_PATH")

# Display proposed changes separately
echo -e "${YELLOW}Proposed Changes:${NOCOLOR}"
if [ ${#PROPOSED_CHANGES[@]} -eq 0 ]; then
    echo -e "${GREEN}No changes required.${NOCOLOR}"
else
    for change in "${PROPOSED_CHANGES[@]}"; do
        echo "$change"
    done

    # Ask for user confirmation
    echo -e "${YELLOW}Would you like to apply these changes?${NOCOLOR} (y/n)"
    read -r user_input

    if [[ $user_input == "y" ]]; then
        # Apply the changes
        for change in "${PROPOSED_CHANGES[@]}"; do
            text=$(echo "$change" | sed -E 's/ - Date:.*//') # Extract text without date and URL
            if ! grep -q "\[$text \`📅\`\]" "$README_PATH"; then
                sed -i "s|-\ \[$text\]|- \[$text \`📅\`]|" "$README_PATH"
            fi
        done
        echo -e "${GREEN}README.md has been updated.${NOCOLOR}"
    else
        echo -e "${RED}Changes were declined.${NOCOLOR}"
    fi
fi


================================================
FILE: assets/clients/CLIENTS.template.md
================================================
<!--
⚠️ WARNING: DO NOT EDIT THIS FILE ⚠️

This Markdown file is auto-generated from the `assets/clients/clients.yaml` file. 
Any manual changes made to this file will be overwritten the next time it is generated. 
To make changes, please edit the `assets/clients/clients.yaml` file and regenerate this Markdown file.
-->

<p align="center">
  <img src="assets/banner.png" />
  <h1 align="center"><a href="https://github.com/awesome-jellyfin/awesome-jellyfin">Awesome Jellyfin</a> > Clients</h1>
</p>

{{ CLIENTS }}

---

> [!NOTE]
> Please note that this Markdown file is automatically generated from the [`clients.yaml`](./assets/clients/clients.yaml) file. 
> **Contributions should only be made by updating the `clients.yaml` file.** 
> Any updates to the `.yaml` file will result in this Markdown file being re-generated to reflect those changes.

<!--
⚠️ WARNING: DO NOT EDIT THIS FILE ⚠️

This Markdown file is auto-generated from the `assets/clients/clients.yaml` file. 
Any manual changes made to this file will be overwritten the next time it is generated. 
To make changes, please edit the `assets/clients/clients.yaml` file and regenerate this Markdown file.
-->


================================================
FILE: assets/clients/README.md
================================================
# Jellyfin Client YAML Configuration Format

This configuration file is used by the [Markdown generator](https://github.com/awesome-jellyfin/clients-md-generator) to produce the Clients list.

---

## 1. `clients` Section

The `clients` section lists all Jellyfin-compatible client applications, each with a set of fields describing its details.

### Client Fields

| Field               | Type                         | Required | Description                                                                                                      |
|---------------------|------------------------------|----------|------------------------------------------------------------------------------------------------------------------|
| **`name`**          | String                       | **Yes**  | The human-readable name of the client.                                                                           |
| **`targets`**       | List of strings              | **Yes**  | One or more environment/platform keys (e.g., `Windows`, `Android`, `iOS`). These must match target definitions in `targets`. |
| `official`          | Boolean                      | No       | Indicates whether the client is an official Jellyfin project. Used to display a special badge. Defaults to true if its `oss` URL is within the [jellyfin org](https://github.com/jellyfin/). |
| `beta`              | Boolean                      | No       | Whether the client is currently in beta. Used to display a special badge if set.                                  |
| `website`           | String                       | No       | An alternative or official website URL for the client. If not provided, the generator uses the `oss` URL in tables. |
| **`oss`** (yaml key: `oss`) | String             | No       | The open-source repository URL for the client, if applicable (e.g., GitHub, GitLab, etc.).                       |
| `price`             | **Price** (see below)        | No       | Indicates cost details (free, paid). Defaults to **free** if `oss` is present.                                    |
| **`downloads`**     | List of **Download items**   | **Yes**  | A list describing where or how to download the client. Each item has a `type` to determine the resulting Markdown link or badge. |
| `types`             | List of strings              | No       | A list of additional categories or features that apply to this client (e.g., `Music`, `Reader`, etc.).           |

#### 1.1 `price` Structure

The `price` object describes whether the client is free, paid, or both:

```yaml
price:
  free: true
  paid: true
```

| Field  | Type    | Required | Description                                                                                                |
|--------|---------|----------|------------------------------------------------------------------------------------------------------------|
| `free` | Boolean | No       | Whether the client is free. Defaults to **true** if `oss` is present.                                      |
| `paid` | Boolean | No       | Whether there is a paid version of the client. Setting both `free` and `paid` to true indicates a freemium or optional purchase model. |

---

#### 1.2 `downloads` List

Each item in `downloads` describes a button/badge/link for where to get the client. The generator has multiple **type** handlers, each producing a specific style of link or shield badge.

Each `Download` object has a **`type`** key (required) to determine which of the generator’s “renderer” structs to use:

| `type` Value    | Additional Fields                                          | Purpose / Example Output                                                                                                                          |
|-----------------|------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------|
| **`icon`**      | `icon`, `url`                                             | Renders an icon from `assets/clients/icons/<icon>.png` linked to `url`. Not typically used if you want dynamic badges like shield.io, but can embed a static icon. |
| **`text`**      | `text`, `url`                                             | Renders a simple **text link** with `[text](url)` format.                                                                                        |
| **`github`**    | `owner`, `repo`, optional `url`                           | Renders a GitHub total downloads badge (`![](https://img.shields.io/github/downloads/owner/repo/total)`). Defaults the link to GitHub releases unless `url` is provided. |
| **`flathub`**   | `package`, optional `url`                                 | Renders a Flathub downloads badge for a specific Flatpak package.                                                                                |
| **`docker`**    | `user`, `repo`, optional `url`                            | Renders a Docker Hub pulls badge.                                                                                                                |
| **`shield`**    | `label`, `content`, `icon`, `color`, **`url`**            | Builds a custom shield.io badge. All fields except `url` are optional, letting you control label text, icon, color, etc.                          |
| **`gitlab`**    | `owner`, `repo`, optional `url`                           | Renders a GitLab badge that reuses the `shield` logic under the hood, with a default GitLab logo.                                                |
| **`demo`**      | **`url`**                                                 | Renders a “Demo” button shield linking to the `url`.                                                                                             |
| **`app-store`** | `id`, optional `url`                                      | Renders an App Store shield linking to `https://apps.apple.com/app/id<id>` by default.                                                           |
| **`google-play`** | `id`, optional `url`                                    | Renders a Google Play shield linking to `https://play.google.com/store/apps/details?id=<id>` by default.                                         |

> [!IMPORTANT]
> If a particular `type` key is unknown, the generator will fail with an error (`“unknown download type”`).

Below is an example `downloads` list for a single client:

```yaml
downloads:
  - type: github
    owner: jellyfin
    repo: jellyfin-media-player
  - type: flathub
    package: com.github.iwalton3.jellyfin-media-player
```

---

### Example Client

Below is a real-world example from the `clients.yaml`:

```yaml
- name: "Swiftfin"
  targets: [ iOS, AppleTV ]
  oss: https://github.com/jellyfin/swiftfin
  official: true
  beta: true
  downloads:
    - type: app-store
      id: "1604098728"
```

Here:

- It’s official, in beta, open-sourced on GitHub.
- It supports `iOS` and `AppleTV`.
- There’s a single download link, an App Store badge, referencing the app ID `1604098728`.

---

## 2. `targets` Section

The `targets` section defines logical groupings (e.g. Desktop, Mobile, TV, Browser) and the individual “sub-targets” that belong within each group.

**Goal:** Let the generator know how to categorize your clients by environment. When it outputs the final Markdown, it will list clients under these group headings.

```yaml
targets:
  - key: Browser
    display: "🌎 Browser-Based"
    has:
      - name: Browser
        mapped: Browser
  - key: Desktop
    display: "💻 Desktop"
    has:
      - name: Windows
        mapped: Windows
      - name: macOS
        mapped: "macOS"
      - name: Linux
        mapped: "Linux"
  ...
```

### Target Group Fields

| Field     | Type        | Required | Description                                                                        |
|-----------|------------|----------|------------------------------------------------------------------------------------|
| `key`     | String      | Yes      | The internal, high-level identifier (e.g., `Desktop`, `Mobile`).                  |
| `display` | String      | Yes      | The heading text shown in the output (can include emoji).                          |
| `has`     | List of `Target` | Yes | The specific target environment entries inside this group.                         |

### Target Definition

Each item in `has`:

| Field    | Type   | Required | Description                                                             |
|----------|--------|----------|-------------------------------------------------------------------------|
| `name`   | String | Yes      | The exact name used under a client’s `targets` array (e.g. `Windows`). |
| `mapped` | String | Yes      | A human-friendly name used in the rendered Markdown heading.           |

> **Example**  
> If a client has `"targets: [ Windows ]"`, the generator will place that client in the table under the `Desktop` group → `Windows` subheading, if you have:

```yaml
- key: Desktop
  display: "💻 Desktop"
  has:
    - name: Windows
      mapped: "Windows"
```

---

## 3. `types` Section

The `types` section describes extra categories (like *Music*, *Reader*, etc.) that you can assign to clients.  

Each type can optionally be displayed in a separate “By Type” section. If `section: true`, the generator will build an additional heading and table for all clients matching that `types` key.  

Each type can also define a `badge`—the generator uses this to add a mini badge next to the client name or in a type legend.

```yaml
types:
  - key: Official
    badge: "🔹"

  - key: Beta
    badge: "⚒️"

  - key: Music
    badge: "🎵"
    display: "Music Client"
    section: true

  - key: Reader
    badge: "📖"
    display: "Reader"
    section: true
```

### ClientType Fields

| Field     | Type   | Required | Description                                                                                 |
|-----------|--------|----------|---------------------------------------------------------------------------------------------|
| `key`     | String | Yes      | A unique identifier for this type (must match anything placed in a client’s `types` list). |
| `badge`   | String | No       | An emoji or short text snippet for the generated badge.                                     |
| `display` | String | No       | A custom heading to display. Falls back to `key` if not provided.                           |
| `section` | Bool   | No       | If `true`, the generator creates a “By Type” section for this category.                     |

> **Note**  
> `Official` and `Beta` are special keys in the code. They are used to produce extra badges if a client has `official: true` or `beta: true`. They also appear in the final “legend” of recognized badges.

---

## 4. How the Generator Uses the YAML

1. **Read Clients**  
   The generator loads each client’s data, determining defaults for `official` (if `oss` is under GitHub’s `jellyfin/`) and `price.free` (true if `oss` is set).

2. **Group by Environment**  
   The generator builds a table for each environment (the `targets` groups).  
   - A top-level heading for the group (e.g., **“🌎 Browser-Based”**).  
   - Subheadings for each item in `has`.  
   - Lists the clients that match `target: [subheading name]` in a table.

3. **Sort Clients by Name**  
   Each environment’s table is sorted alphabetically by client name.

4. **Generate Type Sections**  
   For each `ClientType` with `section: true`, the generator creates a new table grouping. Again, it sorts by name and places those matching clients.

5. **Add a Badge Legend**  
   Finally, the generator includes a list of recognized badges from all `types`—displaying the `key` (or `display`) plus the `badge` in a simple list.

---

## 5. Adding or Modifying Entries

**To add a new client**:
1. Add a YAML object under `clients`.
2. Specify at least `name`, `targets`, and `downloads`.
3. (Optionally) Set `oss`, `website`, `official`, `beta`, `price`, or `types` as needed.
4. If the client’s `targets` includes a new platform not in `targets`, you must also define it under `targets` → a new or existing group.

**To add new categories**:
1. Add an entry to `types` with a `key` matching the desired category name in a client’s `types` list.
2. (Optionally) add a `badge` or set `section: true` to generate a new “By Type” section in the Markdown.

**To add new downloads**:
1. In the `downloads` array for the client, add another item with a supported `type`.
2. Provide the necessary fields for that `type` (e.g., `owner`, `repo` for `github`).

---

## 6. Full Example

Below is a trimmed excerpt from the actual `clients.yaml` to illustrate the structure. Notice how multiple clients are listed, each with a variety of download entries:

```yaml
clients:
  - name: "Jellyfin Media Player"
    targets: [ Windows, Linux, macOS ]
    oss: https://github.com/jellyfin/jellyfin-media-player
    official: true
    downloads:
      - type: github
        owner: jellyfin
        repo: jellyfin-media-player
      - type: flathub
        package: com.github.iwalton3.jellyfin-media-player

  - name: "Swiftfin"
    targets: [ iOS, AppleTV ]
    oss: https://github.com/jellyfin/swiftfin
    official: true
    beta: true
    downloads:
      - type: app-store
        id: "1604098728"

targets:
  - key: Browser
    display: "🌎 Browser-Based"
    has:
      - name: Browser
        mapped: Browser

  - key: Desktop
    display: "💻 Desktop"
    has:
      - name: Windows
        mapped: Windows
      - name: Linux
        mapped: Linux
      - name: macOS
        mapped: macOS

types:
  - key: Official
    badge: "🔹"

  - key: Beta
    badge: "⚒️"

  - key: Music
    badge: "🎵"
    display: "Music Client"
    section: true
```

When run through the Markdown generator, the result includes sections by environment (Desktop, Browser, etc.), and a “By Type” section for “Music Client” if any client sets `types: [ Music ]`.


================================================
FILE: assets/clients/clients.yaml
================================================
clients:
  - name: "Jellyfin Media Player"
    targets: [Windows, Linux, macOS]
    oss: https://github.com/jellyfin/jellyfin-media-player
    official: true
    downloads:
      - type: github
        owner: jellyfin
        repo: jellyfin-media-player
      - type: flathub
        package: com.github.iwalton3.jellyfin-media-player

  - name: Coppelia
    targets: [iOS, Android, Linux, macOS]
    types: [Music]
    oss: https://github.com/j6k4m8/coppelia
    official: false
    beta: true
    price:
      free: true
      paid: false
    downloads:
      - type: github
        owner: j6k4m8
        repo: coppelia

  - name: "Swiftfin"
    targets: [iOS, AppleTV]
    oss: https://github.com/jellyfin/swiftfin
    official: true
    beta: true
    downloads:
      - type: app-store
        id: "1604098728"

  - name: "Sunkfin"
    targets: [iOS]
    oss: https://github.com/jackcrane/sunkfin
    official: false
    beta: false
    downloads:
      - type: app-store
        id: "6743207349"

  - name: "Jellyfin Vue"
    targets: [Browser]
    oss: https://github.com/jellyfin/jellyfin-vue
    official: true
    beta: true
    downloads:
      - type: github
        owner: jellyfin
        repo: jellyfin-vue
        url: https://github.com/jellyfin/jellyfin-vue/actions/workflows/release.yml
      - type: demo
        url: https://jf-vue.pages.dev/

  - name: "Pelagica"
    targets: [Browser]
    oss: https://github.com/KartoffelChipss/pelagica
    official: false
    downloads:
      - type: github
        owner: KartoffelChipss
        repo: pelagica
      - type: demo
        url: https://pelagica.jan.run

  - name: "JellyCon"
    targets: [Kodi]
    oss: https://github.com/jellyfin/jellycon
    official: true
    downloads:
      - type: github
        owner: jellyfin
        repo: jellycon

  - name: "Jellyfin for Kodi"
    targets: [Kodi]
    oss: https://github.com/jellyfin/jellyfin-kodi
    downloads:
      - type: github
        owner: jellyfin
        repo: jellyfin-kodi

  - name: "Jellyfin for Android"
    targets: [Android]
    oss: https://github.com/jellyfin/jellyfin-android
    official: true
    downloads:
      - type: shield
        icon: F-Droid
        url: https://f-droid.org/en/packages/org.jellyfin.mobile/
      - type: shield
        icon: Amazon
        url: https://www.amazon.com/gp/aw/d/B081RFTTQ9
      - type: google-play
        id: org.jellyfin.mobile

  - name: "Jellyfin Mobile for iOS"
    targets: [iOS]
    oss: https://github.com/jellyfin/jellyfin-expo
    official: true
    downloads:
      - type: app-store
        id: "1480192618"

  - name: "Jellyfin for Android TV"
    targets: [AndroidTV]
    oss: https://github.com/jellyfin/jellyfin-androidtv
    official: true
    downloads:
      - type: shield
        icon: Amazon
        url: https://www.amazon.com/gp/aw/d/B07TX7Z725
      - type: google-play
        id: org.jellyfin.androidtv

  - name: "Jellyfin for Roku"
    targets: [Roku]
    oss: https://github.com/jellyfin/jellyfin-roku
    official: true
    downloads:
      - type: shield
        icon: Roku
        url: https://channelstore.roku.com/details/592369/jellyfin

  - name: "Jellyfin for WebOS"
    targets: [WebOS]
    oss: https://github.com/jellyfin/jellyfin-webos
    official: true
    downloads:
      - type: shield
        icon: LG
        url: https://us.lgappstv.com/main/tvapp/detail?appId=1030579

  - name: "Findroid"
    targets: [Android]
    oss: https://github.com/jarnedemeulemeester/findroid
    official: false
    beta: true
    downloads:
      - type: shield
        label: Izzysoft
        url: https://apt.izzysoft.de/fdroid/index/apk/dev.jdtech.jellyfin
      - type: google-play
        id: dev.jdtech.jellyfin
      - type: shield
        icon: F-Droid
        url: https://f-droid.org/en/packages/dev.jdtech.jellyfin/

  - name: "Sailfin"
    targets: [SailfishOS]
    oss: https://github.com/heartfin/harbour-sailfin
    downloads:
      - type: shield
        label: OpenRepos
        url: https://openrepos.net/content/ahappyhuman/sailfin

  - name: "Infuse"
    targets: [iOS, AppleTV, macOS]
    website: https://firecore.com/infuse
    price:
      free: true
      paid: true
    downloads:
      - type: app-store
        id: "1136220934"

  - name: "VidHub"
    targets: [Android, AndroidTV, iOS, AppleTV, macOS]
    website: https://okaapps.com/product/1659622164
    price:
      free: true
      paid: true
    downloads:
      - type: google-play
        id: com.oumi.utility.media.hub
      - type: app-store
        id: "1659622164"

  - name: "sonixd"
    targets: [Browser]
    types: [Music]
    oss: https://github.com/jeffvli/sonixd
    official: false
    beta: true
    downloads:
      - type: github
        owner: jeffvli
        repo: sonixd

  - name: "Finamp"
    targets: [Android, iOS]
    types: [Music]
    oss: https://github.com/jmshrv/finamp
    official: false
    beta: false
    downloads:
      - type: google-play
        id: com.unicornsonlsd.finamp
      - type: app-store
        id: "1574922594"

  - name: "Plappa"
    targets: [iOS]
    types: [Music]
    oss: https://github.com/LeoKlaus/plappa
    official: false
    beta: false
    downloads:
      - type: app-store
        id: "6475201956"

  - name: "MrMC"
    targets: [AppleTV]
    oss: https://github.com/MrMC/mrmc
    price:
      free: true
      paid: true
    downloads:
      - type: shield
        icon: Amazon
        url: https://www.amazon.com/gp/product/B01ENT3I1Q/ref=mas_pm_mrmc
      - type: app-store
        id: "1059536415"
      - type: google-play
        id: tv.mrmc.mrmc

  - name: "Delfin"
    targets: [Linux]
    oss: https://codeberg.org/avery42/delfin
    official: false
    beta: true
    downloads:
      - type: flathub
        package: cafe.avery.Delfin

  - name: "Supersonic"
    targets: [Windows, Linux, macOS]
    types: [Music]
    oss: https://github.com/dweymouth/supersonic
    official: false
    beta: true
    downloads:
      - type: github
        owner: dweymouth
        repo: supersonic
      - type: flathub
        package: io.github.dweymouth.supersonic

  - name: "Tauon Music Box"
    targets: [Windows, Linux]
    types: [Music]
    oss: https://github.com/Taiko2k/TauonMusicBox
    official: false
    downloads:
      - type: github
        owner: Taiko2k
        repo: TauonMusicBox
      - type: flathub
        package: com.github.taiko2k.tauonmb

  - name: "Jellyfin MPV Shim"
    targets: [Windows, Linux, macOS]
    oss: https://github.com/jellyfin/jellyfin-mpv-shim
    official: true
    downloads:
      - type: github
        owner: jellyfin
        repo: jellyfin-mpv-shim
      - type: flathub
        package: com.github.iwalton3.jellyfin-mpv-shim

  - name: "Jellyamp"
    targets: [Windows, Linux]
    types: [Music]
    oss: https://github.com/m0ngr31/jellyamp
    official: false
    downloads:
      - type: github
        owner: m0ngr31
        repo: jellyamp

  - name: "Preserve"
    targets: [Browser, Windows, Linux]
    types: [Music]
    oss: https://gitlab.com/preserve/preserve
    official: false
    beta: true
    downloads:
      - type: gitlab
        owner: preserve
        repo: preserve
      - type: demo
        url: https://preserveplayer.com/

  - name: "Sonixd"
    targets: [Windows, Linux, macOS]
    types: [Music]
    oss: https://github.com/jeffvli/sonixd
    official: false
    beta: true
    downloads:
      - type: github
        owner: jeffvli
        repo: sonixd

  - name: "Feishin"
    targets: [Browser, Windows, Linux, macOS]
    types: [Music]
    oss: https://github.com/jeffvli/feishin
    official: false
    beta: true
    downloads:
      - type: github
        owner: jeffvli
        repo: feishin

  - name: "Manet"
    targets: [iOS]
    types: [Music]
    website: https://tilo.dev/manet/
    price:
      free: true
    downloads:
      - type: app-store
        id: "6470928235"

  - name: "Fintunes"
    targets: [Android, iOS]
    types: [Music]
    oss: https://github.com/leinelissen/jellyfin-audio-player
    official: false
    beta: false
    downloads:
      - type: github
        owner: leinelissen
        repo: jellyfin-audio-player
      - type: shield
        icon: F-Droid
        url: https://f-droid.org/en/packages/nl.moeilijkedingen.jellyfinaudioplayer
      - type: google-play
        id: nl.moeilijkedingen.jellyfinaudioplayer
      - type: app-store
        id: "1527732194"

  - name: "Blink"
    targets: [Windows, Linux, macOS]
    oss: https://github.com/prayag17/Blink
    official: false
    beta: true
    downloads:
      - type: github
        owner: prayag17
        repo: Blink

  - name: "AFinity"
    targets: [Android]
    oss: https://github.com/MakD/AFinity
    official: false
    beta: true
    downloads:
      - type: github
        owner: MakD
        repo: AFinity

  - name: "Gelli"
    targets: [Android]
    types: [Music]
    oss: https://github.com/dkanada/gelli
    official: false
    beta: false
    downloads:
      - type: github
        owner: dkanada
        repo: gelli
      - type: shield
        icon: F-Droid
        url: https://f-droid.org/packages/com.dkanada.gramophone

  - name: "JellyBook"
    targets: [Android, iOS]
    types: [Reader]
    oss: https://github.com/JellyBookOrg/JellyBook
    official: false
    beta: false
    downloads:
      - type: github
        owner: JellyBookOrg
        repo: JellyBook
      - type: shield
        label: Izzysoft
        url: "https://apt.izzysoft.de/fdroid/index/apk/com.KaraWilson.JellyBook/"
      - type: shield
        icon: App Store
        label: TestFlight
        url: "https://testflight.apple.com/join/lEXKY4Dl"

  - name: "Shadfin"
    targets: [Browser]
    oss: https://github.com/Shadfin/app
    official: false
    beta: true
    downloads:
      - type: github
        owner: Shadfin
        repo: app
      - type: demo
        url: https://main.shadfin-standalone.pages.dev

  - name: "Symfonium"
    targets: [Android]
    types: [Music]
    official: false
    beta: true
    website: https://symfonium.app
    price:
      paid: true
    downloads:
      - type: google-play
        id: app.symfonik.music.player

  - name: "Jellyflix"
    targets: [Android, iOS, Windows, Linux, macOS, Browser]
    official: false
    beta: false
    oss: https://github.com/jellyflix-app/jellyflix
    price:
      free: true
    downloads:
      - type: demo
        url: https://jellyflix.kiejon.com/
      - type: app-store
        id: 6476043683
      - type: github
        owner: jellyflix-app
        repo: jellyflix

  - name: "Streamyfin"
    targets: [Android, iOS]
    official: false
    beta: false
    website: https://streamyfin.app
    oss: https://github.com/fredrikburmester/streamyfin
    price:
      free: true
    downloads:
      - type: app-store
        id: "6593660679"
      - type: shield
        icon: App Store
        label: TestFlight
        url: https://testflight.apple.com/join/CWBaAAK2
      - type: google-play
        id: com.fredrikburmester.streamyfin
      - type: github
        owner: fredrikburmester
        repo: streamyfin

  - name: "Switchfin"
    targets: [NintendoSwitch, macOS, Linux, Windows]
    official: false
    beta: true
    oss: https://github.com/dragonflylee/switchfin
    price:
      free: true
    downloads:
      - type: github
        owner: dragonflylee
        repo: switchfin

  - name: "tsukimi"
    targets: [Linux, Windows]
    oss: https://github.com/tsukinaha/tsukimi
    official: false
    beta: true
    price:
      free: true
    downloads:
      - type: github
        owner: tsukinaha
        repo: tsukimi

  - name: "Finer"
    targets: [macOS, iOS]
    types: [Music]
    website: https://monk-studio.com/finer
    official: false
    beta: false
    price:
      free: true
    downloads:
      - type: app-store
        id: "6738301953"

  - name: "Fladder"
    targets: [Android, AndroidTV, iOS, macOS, Windows, Linux, Browser]
    oss: https://github.com/DonutWare/Fladder
    official: false
    beta: false
    price:
      free: true
    downloads:
      - type: github
        owner: DonutWare
        repo: Fladder
      - type: google-play
        id: nl.jknaapen.fladder

  - name: AfuseKt
    targets: [Android]
    official: false
    beta: false
    website: "https://github.com/AttemptD/AfuseKt-release"
    price:
      free: true
      paid: true
    downloads:
      - type: github
        owner: AttemptD
        repo: AfuseKt-release

  - name: AfuseKt TV
    targets: [AndroidTV]
    official: false
    beta: false
    website: "https://github.com/AttemptD/AfuseKtV-release"
    price:
      free: false
      paid: true
    downloads:
      - type: github
        owner: AttemptD
        repo: AfuseKtV-release

  - name: FluentFin
    targets: [Windows]
    oss: https://github.com/insomniachi/FluentFin
    official: false
    beta: true
    downloads:
      - type: github
        owner: insomniachi
        repo: FluentFin

  - name: FinVideo
    targets: [HarmonyOS]
    oss: https://github.com/OHPG/FinVideo
    price:
      free: true
    downloads:
      - type: github
        owner: OHPG
        repo: FinVideo
      - type: shield
        icon: AppGallery
        url: https://appgallery.huawei.com/app/detail?id=org.ohpg.fin.video

  - name: Bloodin
    targets: [Windows, Linux, macOS]
    oss: https://github.com/pathetic/bloodin
    beta: true

  - name: DUNE
    targets: [AndroidTV]
    oss: https://github.com/Sam42a/DUNE
    official: false
    beta: true
    downloads:
      - type: github
        owner: Sam42a
        repo: DUNE

  - name: "yybx"
    targets: [iOS, AppleTV]
    website: https://yybpro.com
    price:
      free: false
      paid: true
    downloads:
      - type: app-store
        id: "1519723194"

  - name: "HamHub"
    targets: [iOS, AppleTV, macOS]
    website: https://www.hamhub.app/
    price:
      free: true
    downloads:
      - type: app-store
        id: "6458691598"

  - name: "Filebar"
    targets: [iOS, AppleTV]
    website: https://fileball.app/
    price:
      free: true
      paid: true
    downloads:
      - type: app-store
        id: "1558391784"

  - name: Ghosten-Player
    targets: [Android, AndroidTV]
    oss: https://github.com/GhostenEditor/Ghosten-Player
    official: false
    downloads:
      - type: github
        owner: GhostenEditor
        repo: Ghosten-Player

  - name: "SenPlayer"
    targets: [macOS, iOS, AppleTV]
    website: https://apps.apple.com/app/id6443975850
    price:
      free: true
      paid: true
    downloads:
      - type: app-store
        id: "6443975850"

  - name: iPlay
    targets: [iOS, Windows, macOS]
    oss: https://github.com/saltpi/iPlay
    official: false
    downloads:
      - type: github
        owner: saltpi
        repo: iPlay
      - type: app-store
        id: "6480576133"
      - type: shield
        icon: Amazon
        url: https://www.amazon.com/gp/product/B0DB2KL58G
      - type: shield
        label: Microsoft Store
        url: https://apps.microsoft.com/detail/9NBZ2BXD4WFZ

  - name: Jellyfin for Tizen
    targets: [Tizen]
    oss: https://github.com/jellyfin/jellyfin-tizen
    official: true
    downloads:
      - type: text
        text: Build It Yourself
        url: https://github.com/jellyfin/jellyfin-tizen

  - name: FinMusic
    targets: [HarmonyOS]
    types: [Music]
    oss: https://github.com/OHPG/FinMusic
    downloads:
      - type: shield
        icon: AppGallery
        url: https://appgallery.huawei.com/app/detail?id=org.ohpg.fin.music
      - type: github
        owner: OHPG
        repo: FinMusic

  - name: "Discrete"
    targets: [iOS, macOS]
    types: [Music]
    website: https://discrete.app/
    price:
      free: true
      paid: true
    official: false
    beta: false
    downloads:
      - type: app-store
        id: "6746067740"

  - name: "Foxy"
    targets: [Windows, Linux, macOS]
    types: [Music]
    oss: https://github.com/Devioxic/Foxy-Desktop
    official: false
    beta: false
    downloads:
      - type: github
        owner: Devioxic
        repo: Foxy-Desktop

  - name: "Jelly Music App"
    targets: [Browser, Windows, macOS, Linux]
    types: [Music]
    oss: https://github.com/Stannnnn/jelly-app
    official: false
    beta: false
    price:
      free: true
    downloads:
      - type: github
        owner: Stannnnn
        repo: jelly-app

  - name: "Phyn"
    targets: [macOS, iOS, Android]
    website: https://phyn.app
    official: false
    beta: false
    price:
      free: true
      paid: true
    downloads:
      - type: google-play
        id: com.appsynergyts.phyn
      - type: app-store
        id: "6457674815"

  - name: "Finetic"
    targets: [Browser]
    oss: https://github.com/AyaanZaveri/finetic
    official: false
    beta: false
    price:
      free: true
    downloads:
      - type: github
        owner: AyaanZaveri
        repo: finetic

  - name: "Reefin"
    targets: [Android, AndroidTV]
    website: https://reefin.dev/
    oss: https://github.com/SKULSHADY/reefin
    downloads:
      - type: google-play
        id: com.shady.reefin
      - type: github
        owner: SKULSHADY
        repo: reefin

  - name: "Hills"
    targets: [Windows, Android]
    website: https://play.google.com/store/apps/details?id=com.mountains.hills
    official: false
    beta: false
    price:
      free: true
      paid: true
    downloads:
      - type: google-play
        id: com.mountains.hills
      - type: shield
        label: Microsoft Store
        url: https://apps.microsoft.com/detail/9NXNZFRLLWZX

  - name: "Rodel Player"
    targets: [Windows]
    website: https://apps.microsoft.com/detail/9nb0h051m4v4
    official: false
    beta: false
    price:
      free: true
    downloads:
      - type: shield
        label: Microsoft Store
        url: https://apps.microsoft.com/detail/9nb0h051m4v4

  - name: "JellyRock"
    targets: [Roku]
    oss: https://github.com/cewert/jellyrock
    price:
      free: true
      paid: false
    beta: false
    official: false
    downloads:
      - type: shield
        icon: Roku
        url: https://channelstore.roku.com/details/232f9e82db11ce628e3fe7e01382a330:a85d6e9e520567806e8dae1c0cabadd5/jellyrock
      - type: github
        owner: cewert
        repo: jellyrock

  - name: Wholphin
    targets: [AndroidTV]
    oss: https://github.com/damontecres/Wholphin
    official: false
    beta: false
    downloads:
      - type: google-play
        id: com.github.damontecres.wholphin
      - type: github
        owner: damontecres
        repo: Wholphin

  - name: Void
    targets: [Android, AndroidTV]
    oss: https://github.com/hritwikjohri/Void-for-jellyfin
    price:
      free: true
      paid: false
    beta: true
    official: false
    downloads:
      - type: github
        owner: hritwikjohri
        repo: Void-for-jellyfin
      - type: github
        owner: hritwikjohri
        repo: VoidTV-for-jellyfin

  - name: Gelly
    targets: [Linux]
    types: [Music]
    oss: https://github.com/Fingel/gelly
    official: false
    beta: true
    price:
      free: true
    downloads:
      - type: github
        owner: Fingel
        repo: gelly
      - type: flathub
        package: io.m51.Gelly

  - name: "Moonfin"
    targets: [AndroidTV, Roku, webOS, Tizen]
    oss: https://github.com/Moonfin-Client
    official: false    
    price:
      free: true
      paid: false
    downloads:
      - 
        type: github
        owner: Moonfin-Client
        repo: AndroidTV-FireTV
        label: AndroidTV
      - 
        type: github
        owner: Moonfin-Client
        repo: Roku
        label: Roku
      - 
        type: github
        owner: Moonfin-Client
        repo: webOS
        label: webOS
      - 
        type: github
        owner: Moonfin-Client
        repo: Tizen
        label: Tizen
      - 
        type: google-play
        id: org.moonfin.androidtv

  - name: ampcast
    targets: [Browser, Windows, Linux, macOS]
    types: [Music]
    oss: https://github.com/rekkyrosso/ampcast
    official: false
    beta: true
    price:
      free: true
      paid: false
    downloads:
      - type: github
        owner: rekkyrosso
        repo: ampcast

  - name: "Aperture"
    targets: [Browser]
    oss: https://github.com/akhilmulpurii/aperture
    official: false
    beta: true
    price:
      free: true
    downloads:
      - type: github
        owner: akhilmulpurii
        repo: aperture

  - name: "Mediora"
    targets: [AppleTV]
    website: https://github.com/ghobs91/mediora
    oss: https://github.com/ghobs91/mediora
    price:
      free: true
      paid: false
    downloads:
      - type: app-store
        id: "6757345487"

  - name: Yamby
    targets: [Android, AndroidTV]
    price:
      free: true
      paid: true
    downloads:
      - type: google-play
        id: com.hush.yamby
  
  - name: JellySee
    targets: [AppleTV]
    official: false
    beta: false
    price:
      free: false
      paid: true
    downloads:
      - type: app-store
        id: "6748783768"
          
  - name: Dee Jellie
    targets: [iOS, AppleTV, macOS]
    types: [Music]
    website: https://www.deejellie.com
    official: false
    beta: false
    price:
      free: false
      paid: true
    downloads:
      - type: app-store
        id: "6755585736"

  - name: "Breezyfin"
    targets: [WebOS]
    oss: https://github.com/botagas/Breezyfin
    official: false
    beta: true
    price:
      free: true
      paid: false
    downloads:
      - type: github
        owner: botagas
        repo: Breezyfin

  - name: JellyCine
    targets: [Android]
    oss: https://github.com/sureshfizzy/JellyCine
    downloads:
      - type: github
        owner: sureshfizzy
        repo: JellyCine

  - name: Playtorrio
    targets: [Windows, macOS, Linux, Android]
    oss: https://github.com/ayman708-UX/PlayTorrio
    downloads:
      - type: github
        owner: ayman708-UX
        repo: PlayTorrio

  - name: JellyTV
    targets: [iOS]
    website: https://jellytv.app/en
    price:
      free: false
      paid: true
    downloads:
      - type: app-store
        id: "6752357290"

  - name: Elefin
    targets: [AndroidTV]
    oss: https://github.com/flex36ty/elefin
    downloads:
      - type: github
        owner: flex36ty
        repo: elefin

  - name: Jellify
    targets: [iOS, Android]
    types: [Music]
    oss: https://github.com/Jellify-Music/App
    downloads:
      - type: github
        owner: Jellify-Music
        repo: App
      - type: shield
        icon: App Store
        label: TestFlight
        url: https://testflight.apple.com/join/etVSc7ZQ

targets:
  - key: Browser
    display: "🌎 Browser-Based"
    has:
      - name: Browser
        mapped: Browser

  - key: Desktop
    display: "💻 Desktop"
    has:
      - name: Windows
        mapped: Windows
      - name: macOS
        mapped: "macOS"
      - name: Linux
        mapped: "Linux"

  - key: Mobile
    display: "📱 Mobile"
    has:
      - name: iOS
        mapped: "iOS"
      - name: Android
        mapped: "Android"
      - name: SailfishOS
        mapped: "Sailfish OS"
      - name: HarmonyOS
        mapped: "HarmonyOS"
      - name: NintendoSwitch
        mapped: "Nintendo Switch"

  - key: TV
    display: "📺 TV"
    has:
      - name: AppleTV
        mapped: "Apple TV"
      - name: AndroidTV
        mapped: "Android TV"
      - name: Kodi
        mapped: "Kodi"
      - name: Roku
        mapped: "Roku"
      - name: Tizen
        mapped: "Tizen"
      - name: WebOS
        mapped: "webOS"

types:
  # dummy type for official badge
  - key: Official
    badge: "🔹"

  # dummy type for beta badge
  - key: Beta
    badge: "⚒️"

  - key: Music
    badge: "🎵"
    display: Music Client
    section: true

  - key: Reader
    badge: "📖"
    display: Reader
    section: true


================================================
FILE: assets/clients/icons/.gitkeep
================================================


================================================
FILE: snippets/language-overlay/README.md
================================================
# Flags on Movie Posters

Ever wanted to easily identify the language of a movie at a glance? Now you can with this script!

This script adds flags to movie posters, so that you can quickly determine the language of the movie. Currently, it supports German and Dutch flags, but can easily be modified to support any language.

## Requirements

* `exiftool`
* `jq`
* FFmpeg (for `ffprobe`)
* imagemagick (for `convert`)

## Usage

1. Save the script to a file, e.g. `movie_flags.sh`
2. Change the `MOVIES_DIR` and `OVERLAY_DIR` variables and modify to your desired languages
3. Change the file permissions to make it executable, e.g. `chmod +x movie_flags.sh`
4. Run the script, e.g. `./movie_flags.sh`

## Credits

This script was created by [u/ProductRockstar](https://www.reddit.com/user/ProductRockstar/).
[[Original Post](https://www.reddit.com/r/jellyfin/comments/11dgmp3/script_to_add_language_overlay_to_movie_poster/)]


================================================
FILE: snippets/language-overlay/language-overlay.sh
================================================
#!/bin/bash

# Author: u/ProductRockstar
# https://www.reddit.com/r/jellyfin/comments/11dgmp3/script_to_add_language_overlay_to_movie_poster/

MOVIES_DIR="/mnt_data/media/movies"
OVERLAY_DIR="/mnt_data/media"

while true 
do
  cd "$MOVIES_DIR"
  for dir in */; do
    cd "$MOVIES_DIR/$dir"
    pwd

    flink=$(readlink -f poster.jpg)
    creatortool=$( exiftool -f -s3 -"creatortool" "$flink" )

    if [ "${creatortool}" != "993" ]; then
      mlink=$(readlink -f *.mkv)
      langs=$( ffprobe "$mlink" -show_entries stream=index:stream_tags=language -select_streams a -v 0 -of json=c=1 | jq --raw-output '.streams[].tags.language')

      GER='ger'
      DUT='dut'

      case $langs in

        *"$DUT"*)
          widthposter=$( exiftool -f -s3 -"ImageWidth" "$flink" )
	        convert "$OVERLAY_DIR/dut_overlay.png" -resize "$widthposter" "$OVERLAY_DIR/dut_overlay_tmp.png"
	        convert  "$flink"  "$OVERLAY_DIR/dut_overlay_tmp.png" -flatten  "$flink"
	        chmod +644 "$flink"
	        chown nobody "$flink"
	        exiftool -creatortool="993" -overwrite_original "$flink"
          ;;

        *"$GER"*)
          widthposter=$( exiftool -f -s3 -"ImageWidth" "$flink" )
	        convert "$OVERLAY_DIR/ger_overlay.png" -resize "$widthposter" "$OVERLAY_DIR/ger_overlay_tmp.png"
	        convert  "$flink"  "$OVERLAY_DIR/ger_overlay_tmp.png" -flatten  "$flink"
	        chmod +644 "$flink"
	        chown nobody "$flink"
	        exiftool -creatortool="993" -overwrite_original "$flink"
          ;;
      esac

    fi
  done
  sleep 90000
done
Download .txt
gitextract_mxfy2un7/

├── .github/
│   ├── CODEOWNERS
│   ├── ISSUE_TEMPLATE/
│   │   ├── 009-request-theme.yaml
│   │   ├── 010-request-client.yaml
│   │   ├── 099-request-other.yaml
│   │   ├── 100-report-mistake.yaml
│   │   └── 200-remove-project.yaml
│   └── workflows/
│       ├── check-for-pending-jobs.yaml
│       ├── clients-pull-request.yaml
│       ├── clients-update-clients.yaml
│       ├── lint.yaml
│       ├── monthly-release.yaml
│       └── sorting-pull-check.yaml
├── CLIENTS.md
├── CODE-OF-CONDUCT.md
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── THEMES.md
├── assets/
│   ├── DateCheck.sh
│   └── clients/
│       ├── CLIENTS.template.md
│       ├── README.md
│       ├── clients.yaml
│       └── icons/
│           └── .gitkeep
└── snippets/
    └── language-overlay/
        ├── README.md
        └── language-overlay.sh
Condensed preview — 25 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (191K chars).
[
  {
    "path": ".github/CODEOWNERS",
    "chars": 27,
    "preview": "* @awesome-jellyfin/review\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/009-request-theme.yaml",
    "chars": 2574,
    "preview": "name: \"🎨 Add Theme\"\ndescription: >\n  Do you have a theme that is not yet listed and want it to be listed in the repo?\n\nt"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/010-request-client.yaml",
    "chars": 2877,
    "preview": "name: \"📱 Add Client\"\ndescription: >\n  Do you have a client that is not yet listed and want it to be listed in the repo?\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/099-request-other.yaml",
    "chars": 2632,
    "preview": "name: \"✨ Request something else\"\ndescription: >\n  Do you have anything else that is not yet listed and want it to be lis"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/100-report-mistake.yaml",
    "chars": 1841,
    "preview": "name: \"🚩 Report a mistake (e. g. Spelling, Grammar, ...)\"\ndescription: >\n  Did you find an error in the list?\n\nlabels: \n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/200-remove-project.yaml",
    "chars": 1459,
    "preview": "name: \"🔍 Report a project (e. g. Inactive, Broken, Harmful, ...)\"\ndescription: >\n  Did you find a project, which shouldn"
  },
  {
    "path": ".github/workflows/check-for-pending-jobs.yaml",
    "chars": 479,
    "preview": "name: Check for Pending Jobs\n\non:\n  schedule:\n    - cron: '32 */6 * * *'\n  workflow_dispatch: {}\n\njobs:\n  hit-endpoint:\n"
  },
  {
    "path": ".github/workflows/clients-pull-request.yaml",
    "chars": 1643,
    "preview": "name: 'Clients Update Pull Request'\r\n\r\non:\r\n  # pull_request:\r\n  #  paths:\r\n  #    - 'assets/clients/clients.yaml'\r\n  wo"
  },
  {
    "path": ".github/workflows/clients-update-clients.yaml",
    "chars": 1362,
    "preview": "name: '[Clients] Update CLIENTS.md'\r\n\r\non:\r\n  push:\r\n    branches:\r\n      - 'main'\r\n    paths:\r\n      - 'assets/clients/"
  },
  {
    "path": ".github/workflows/lint.yaml",
    "chars": 356,
    "preview": "name: Lint\n\non:\n  pull_request:\n    branches: [main]\n    paths:\n      - \"**/*.md\"\n\njobs:\n  lint:\n    runs-on: ubuntu-lat"
  },
  {
    "path": ".github/workflows/monthly-release.yaml",
    "chars": 3237,
    "preview": "name: Monthly Release\n\non:\n  schedule:\n    - cron: \"42 9 1 * *\"\n  workflow_dispatch:\n\npermissions:\n  contents: write\n\nco"
  },
  {
    "path": ".github/workflows/sorting-pull-check.yaml",
    "chars": 2329,
    "preview": "name: 'README Update Pull Request'\n\non:\n  # pull_request:\n  #   paths:\n  #     - 'README.md'\n  workflow_dispatch:\n\njobs:"
  },
  {
    "path": "CLIENTS.md",
    "chars": 60718,
    "preview": "\n<!--\n⚠️ WARNING: DO NOT EDIT THIS FILE ⚠️\n\nThis Markdown file is auto-generated from the `assets/clients/clients.yaml` "
  },
  {
    "path": "CODE-OF-CONDUCT.md",
    "chars": 3231,
    "preview": "# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nIn the interest of fostering an open and welcoming environment, w"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 4471,
    "preview": "# Contribution Guidelines\n\nPlease note that this project is released with a [Contributor Code of Conduct](CODE-OF-CONDUC"
  },
  {
    "path": "LICENSE",
    "chars": 7048,
    "preview": "Creative Commons Legal Code\n\nCC0 1.0 Universal\n\n    CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE\n"
  },
  {
    "path": "README.md",
    "chars": 29829,
    "preview": "<!--lint disable awesome-heading awesome-toc double-link-->\n\n<p align=\"center\">\n  <img src=\"/assets/banner.png\" />\n  <h1"
  },
  {
    "path": "THEMES.md",
    "chars": 14150,
    "preview": "<p align=\"center\">\n  <img src=\"assets/banner.png\" />\n  <h1 align=\"center\"><a href=\"https://github.com/awesome-jellyfin/a"
  },
  {
    "path": "assets/DateCheck.sh",
    "chars": 3178,
    "preview": "#!/bin/bash\n\n# Check if a GitHub API token is provided\nif [ \"$#\" -ne 2 ] || [ \"$1\" != \"-api\" ]; then\n    echo -e \"${RED}"
  },
  {
    "path": "assets/clients/CLIENTS.template.md",
    "chars": 1175,
    "preview": "<!--\n⚠️ WARNING: DO NOT EDIT THIS FILE ⚠️\n\nThis Markdown file is auto-generated from the `assets/clients/clients.yaml` f"
  },
  {
    "path": "assets/clients/README.md",
    "chars": 14068,
    "preview": "# Jellyfin Client YAML Configuration Format\n\nThis configuration file is used by the [Markdown generator](https://github."
  },
  {
    "path": "assets/clients/clients.yaml",
    "chars": 23920,
    "preview": "clients:\n  - name: \"Jellyfin Media Player\"\n    targets: [Windows, Linux, macOS]\n    oss: https://github.com/jellyfin/jel"
  },
  {
    "path": "assets/clients/icons/.gitkeep",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "snippets/language-overlay/README.md",
    "chars": 927,
    "preview": "# Flags on Movie Posters\n\nEver wanted to easily identify the language of a movie at a glance? Now you can with this scri"
  },
  {
    "path": "snippets/language-overlay/language-overlay.sh",
    "chars": 1559,
    "preview": "#!/bin/bash\n\n# Author: u/ProductRockstar\n# https://www.reddit.com/r/jellyfin/comments/11dgmp3/script_to_add_language_ove"
  }
]

About this extraction

This page contains the full source code of the awesome-jellyfin/awesome-jellyfin GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 25 files (180.8 KB), approximately 53.8k tokens. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!