Is there a maximum limit for dashboards marked as Favorites (Starred Dashboards) in Grafana?

  • What Grafana version and what operating system are you using?
    Grafana version: Grafana v11.6.8 (c3e34314f7)
    OS: macOS Tahoe 26.5.2

  • What are you trying to achieve?
    I would like to understand whether Grafana has an upper limit on the number of dashboards that a user can mark as Favorites (Starred/Favorited dashboards).

  • How are you trying to achieve it?
    We are reviewing the dashboard pinning/favorites functionality and updating our product documentation. We want to verify whether Grafana enforces any limit on the number of dashboards that can be marked as favorites by a user.

  • What happened?
    We could not find any documented limit in Grafana and have not encountered any restrictions during initial testing

  • What did you expect to happen?
    We would like confirmation on the following:

    • Is there a maximum number of dashboards that can be marked as favorites per user?
    • If a limit exists, what is the default value and can it be configured?
    • Are there any performance considerations when a large number of dashboards are marked as favorites?
  • Can you copy/paste the configuration(s) that you are having problems with?
    No specific configuration is involved. This is a general question regarding Grafana’s favorites/starred dashboards functionality.

  • Did you receive any errors in the Grafana UI or in related logs? If so, please tell us exactly what they were.
    No errors were observed.

  • Did you follow any online instructions? If so, what is the URL?
    We reviewed the Grafana documentation but could not find information regarding any maximum limit for favorited/starred dashboards.

I ran source AI source code analysis for you:


1. Is there a maximum number of starred dashboards per user?

No hard limit exists. The starring system has no enforced cap on the number of dashboards a user can mark as favorites. Reviewing the full stack confirms this:

  • pkg/services/star/starimpl/star.go β€” Add() simply validates the command and calls Insert(). No count check, no quota guard.
  • pkg/services/star/starimpl/xorm_store.go β€” Insert() writes a row to the star table without any row-count check.
  • pkg/services/star/model.go β€” The data model has no max-stars field or quota target.

The quota system ([quota] in grafana.ini) covers org-level dashboards, users, data sources, API keys, and alert rules β€” not per-user starred dashboards. There is no user_star quota target defined anywhere in the codebase.

2. Default value and configurability

Config Key Applies To Default
quota.org_dashboard Dashboards created per org 100
quota.user_org Orgs a user can create 10
(no key) Dashboards starred per user No limit, not configurable

There is no grafana.ini setting that bounds how many dashboards can be starred per user.

3. Performance considerations with many starred dashboards

There are real performance implications buried in the code:

a) List() loads all stars on every search request β€” no pagination

grafana / grafana / pkg / services / star / starimpl / xorm_store.go

func (s *sqlStore) List(ctx context.Context, query *star.GetUserStarsQuery) (*star.GetUserStarsResult, error) {
    userStars := make(map[string]bool)
    err := s.db.WithDbSession(ctx, func(dbSession *db.Session) error {
        var stars = make([]star.Star, 0)
        err := dbSession.Where("user_id=?", query.UserID).Find(&stars)
        for _, star := range stars {

A full table scan filtered only by user_id β€” no LIMIT. If a user has thousands of starred dashboards, this returns all of them every time.

b) Star UIDs are injected into every search query

grafana / grafana / pkg / services / search / service.gov1

if query.IsStarred && len(query.DashboardIds) == 0 && len(query.DashboardUIDs) == 0 {
    for uid := range staredDashUIDs {
        query.DashboardUIDs = append(query.DashboardUIDs, uid)
    }
}


When a user searches for starred dashboards, all starred UIDs are passed as a filter list to the dashboard search query. A very large number of UIDs can generate expensive IN (...) clauses in SQL or large request payloads to the Kubernetes API (Unified Storage mode).

c) Stars are loaded on every SearchHandler call

grafana / grafana / pkg / services / search / service.gov2

staredDashUIDs, err := s.getUserStars(ctx)


getUserStars is called unconditionally on every search, even when IsStarred=false. A user with many favorites causes a DB round-trip on every dashboard search.


Summary

Question Answer
Hard limit on starred dashboards per user? :cross_mark: None β€” no code enforcement
Default limit N/A β€” unlimited
Configurable? :cross_mark: Not exposed via grafana.ini or quota system
Performance concerns with many favorites? :white_check_mark: Yes β€” unbounded List() query, full UID list injected into searches, and stars fetched on every search request

If you anticipate users starring hundreds or thousands of dashboards, the main risks are: increased DB query time on the star table, large IN clauses in dashboard search SQL, and growing memory allocations for the map[string]bool built on every request.


Thanks a lot @jangaraj