---
title: "What is Kanban?"
canonical: https://wavect.io/glossary/kanban/
language: en
description: "A flow-based method that visualises work on a board, limits how much is in progress at once, and pulls new work only when there is capacity, with no fixed iterations."
image: "https://wavect.io/img/general/bak/open_graph_preview.jpg"
---

METHODOLOGY

# Kanban

A flow-based method that visualises work on a board, limits how much is in progress at once, and pulls new work only when there is capacity, with no fixed iterations.

Last reviewed: 2026-06-02 by [Kevin Riedl](/team/kevin-riedl/) [wiki ↗](https://www.wikidata.org/wiki/Q139796365)

Kanban has two core ideas: make the work visible, and limit work in progress. You put every item on a board with columns for each stage (to do, in progress, review, done), and you cap how many items can sit in each active column at once. When a column is full, nobody starts new work until something moves out. That cap is the whole point: it forces the team to finish things before starting more.

The contrast with [Scrum](/glossary/scrum/) is the cadence. Scrum batches work into fixed [sprints](/glossary/sprint/) and re-plans at each boundary. Kanban has no sprints. Work is pulled continuously as capacity frees up, and you can change priorities at any moment without waiting for a sprint to end. There is no commitment ceremony, no sprint review, no artificial two-week box. Both are implementations of the same [agile](/glossary/agile/) goal: tight feedback and the ability to change course on evidence.

Pick Kanban when work arrives unpredictably and interrupt-driven (support, operations, platform teams), or when a team is mature enough that the sprint scaffolding has become pure overhead. Pick Scrum when a team needs the rhythm and the forced review to build delivery discipline, or when stakeholders need a predictable demo cadence to plan around.

Worked example of what a WIP limit actually does to a team: an “in progress” column capped at three, on a team of five, means two people will sometimes have nothing of their own to start. The instinctive reaction is that this is waste, idle engineers. It is the opposite. Those two are now forced to help finish the three things already in flight, review a teammate’s work, or pair on the blocker, instead of opening a fourth task and spreading the team thinner. The discomfort of a full column is the mechanism working: it converts “everyone busy, nothing shipping” into “fewer things in flight, things actually finishing”. Teams that cannot tolerate that brief idleness quietly raise the limit until it stops constraining anything, and then wonder why throughput did not improve.

The honest version: WIP limits are where the value is, and they are also the part teams quietly ignore. A Kanban board with no WIP limit is just a to-do list with extra columns. If the team is starting five things and finishing none, the limit is the fix, not a bigger board.

// FAQ

## FAQs

### What is Kanban?

A flow-based method that visualises work on a board, caps how many items can be in progress at once (the WIP limit), and pulls new work only when capacity frees up. There are no fixed iterations and priorities can change at any time.

### Kanban vs Scrum?

Scrum batches work into fixed sprints with a commitment and review at each boundary. Kanban runs a continuous pull with WIP limits and no sprints, so priorities can shift at any moment. Kanban suits unpredictable, interrupt-driven work and mature teams. Scrum suits teams that need a cadence to build discipline.

### When does Kanban fail?

When the team skips WIP limits. Without a cap on work in progress, a Kanban board is just a to-do list with extra columns and everyone starts more than they finish. The limit is the mechanism that forces work to completion. Drop it and you have lost the method.

Related terms

- [Scrum](/glossary/scrum/)
- [Agile](/glossary/agile/)
- [Sprint](/glossary/sprint/)

Related services

- [Custom Software Development](/services/software-development/)

Related case studies

- [Polity](/case-studies/polity/)

Related guides

- [The software development process, week by week](/software-development-guide/software-development-process/)

Talk to us

## Structured Data

```json
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@id": "https://wavect.io/#organization",
      "@type": [
        "Organization",
        "ProfessionalService",
        "LocalBusiness"
      ],
      "employee": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "founder": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "legalRepresentative": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "name": "Wavect GmbH",
      "subjectOf": {
        "@id": "https://wavect.io/verified-claims.json#dataset",
        "@type": "Dataset",
        "creator": {
          "@id": "https://wavect.io/#organization",
          "@type": [
            "Organization",
            "ProfessionalService",
            "LocalBusiness"
          ]
        },
        "description": "A machine-readable registry of quantitative and qualitative claims published by Wavect, with review dates, localized page appearances and public third-party citations where available.",
        "inLanguage": "en",
        "isAccessibleForFree": true,
        "license": "https://creativecommons.org/licenses/by/4.0/",
        "name": "Wavect verified publication claims",
        "url": "https://wavect.io/verified-claims.json"
      },
      "url": "https://wavect.io/"
    },
    {
      "@id": "https://wavect.io/team/kevin-riedl/#person",
      "@type": "Person",
      "jobTitle": "Managing Director",
      "name": "Kevin Riedl",
      "sameAs": [
        "https://www.wikidata.org/wiki/Q139796365",
        "https://www.linkedin.com/in/wsdt",
        "https://github.com/wsdt"
      ],
      "url": "https://wavect.io/team/kevin-riedl/",
      "worksFor": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      }
    },
    {
      "@id": "https://wavect.io/team/christof-jori/#person",
      "@type": "Person",
      "jobTitle": "Managing Director",
      "name": "Christof Jori",
      "sameAs": [
        "https://www.wikidata.org/wiki/Q139796367",
        "https://www.linkedin.com/in/jocr77/",
        "https://github.com/jo-chris"
      ],
      "url": "https://wavect.io/team/christof-jori/",
      "worksFor": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      }
    },
    {
      "@id": "https://wavect.io/#website",
      "@type": "WebSite",
      "inLanguage": [
        "en",
        "de",
        "es",
        "zh"
      ],
      "name": "Wavect",
      "potentialAction": {
        "@type": "SearchAction",
        "query-input": "required name=search_term_string",
        "target": {
          "@type": "EntryPoint",
          "urlTemplate": "https://wavect.io/search/?q={search_term_string}"
        }
      },
      "publisher": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      },
      "url": "https://wavect.io/"
    }
  ]
}
```

```json
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@id": "https://wavect.io/glossary/kanban/#term",
      "@type": "DefinedTerm",
      "alternateName": [],
      "description": "A flow-based method that visualises work on a board, limits how much is in progress at once, and pulls new work only when there is capacity, with no fixed iterations.",
      "inDefinedTermSet": "https://wavect.io/glossary/#termset",
      "name": "Kanban",
      "termCode": "kanban",
      "url": "https://wavect.io/glossary/kanban/"
    },
    {
      "@id": "https://wavect.io/glossary/kanban/#webpage",
      "@type": "WebPage",
      "about": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      },
      "author": {
        "@id": "https://wavect.io/team/kevin-riedl/#person",
        "@type": "Person",
        "name": "Kevin Riedl",
        "url": "https://wavect.io/team/kevin-riedl/"
      },
      "dateModified": "2026-06-02",
      "description": "A flow-based method that visualises work on a board, limits how much is in progress at once, and pulls new work only when there is capacity, with no fixed iterations.",
      "headline": "Kanban",
      "inLanguage": "en",
      "isPartOf": {
        "@id": "https://wavect.io/#website",
        "@type": "WebSite"
      },
      "lastReviewed": "2026-06-02",
      "mainEntity": {
        "@id": "https://wavect.io/glossary/kanban/#term"
      },
      "mentions": [
        {
          "@id": "https://wavect.io/#organization",
          "@type": [
            "Organization",
            "ProfessionalService",
            "LocalBusiness"
          ]
        }
      ],
      "name": "Kanban",
      "reviewedBy": {
        "@id": "https://wavect.io/team/christof-jori/#person",
        "@type": "Person",
        "name": "Christof Jori",
        "url": "https://wavect.io/team/christof-jori/"
      },
      "speakable": {
        "@type": "SpeakableSpecification",
        "cssSelector": [
          ".gls-single__h1",
          ".gls-single__tldr"
        ]
      },
      "url": "https://wavect.io/glossary/kanban/"
    },
    {
      "@type": "BreadcrumbList",
      "itemListElement": [
        {
          "@type": "ListItem",
          "item": "https://wavect.io/",
          "name": "Home",
          "position": 1
        },
        {
          "@type": "ListItem",
          "item": "https://wavect.io/glossary/",
          "name": "Tech, product & engagement glossary",
          "position": 2
        },
        {
          "@type": "ListItem",
          "item": "https://wavect.io/glossary/kanban/",
          "name": "Kanban",
          "position": 3
        }
      ]
    }
  ]
}
```

```json
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "A flow-based method that visualises work on a board, caps how many items can be in progress at once (the WIP limit), and pulls new work only when capacity frees up. There are no fixed iterations and priorities can change at any time."
      },
      "name": "What is Kanban?"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Scrum batches work into fixed sprints with a commitment and review at each boundary. Kanban runs a continuous pull with WIP limits and no sprints, so priorities can shift at any moment. Kanban suits unpredictable, interrupt-driven work and mature teams. Scrum suits teams that need a cadence to build discipline."
      },
      "name": "Kanban vs Scrum?"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "When the team skips WIP limits. Without a cap on work in progress, a Kanban board is just a to-do list with extra columns and everyone starts more than they finish. The limit is the mechanism that forces work to completion. Drop it and you have lost the method."
      },
      "name": "When does Kanban fail?"
    }
  ],
  "speakable": {
    "@type": "SpeakableSpecification",
    "cssSelector": [
      ".faq-question",
      ".faq-answer"
    ]
  }
}
```
