hi-manshu/charty

Weave data into enchanting Jetpack Compose graphs—no potions required! 📜🔮

Kotlin

1,289

243 commits

updated Aug 31, 2026

See the code

README

Charty

Banner

A sleek, lightweight charting library for Jetpack Compose — and, uniquely, for Kotlin Multiplatform: one codebase renders your charts on Android, iOS, Desktop, and the Web. Built with ❤️ by @hi-manshu.

Charty Charty Static Check GitHub Repo stars AndroidWeekly Twitter Follow

📖 Documentation · ▶️ Playground · 📝 Changelog

Every chart has a page with a picture, the code that produced it, and its full configuration. The playground runs all 35 of them in your browser, every option exposed as a control you can turn.


Install

commonMain.dependencies {
    implementation("com.himanshoe:charty:3.0.0")
}

Projected 3D charts are a separate artifact on its own version, and every declaration in it is @ChartyExperimental — see charty-3d for the opt-in, and for an honest account of what tilting a chart costs you.

implementation("com.himanshoe:charty-3d:1.0.0")

Your first chart

LineChart(
    data = { listOf(LineData("Mon", 20f), LineData("Tue", 45f), LineData("Wed", 30f)) },
    color = ChartyColor.Solid(ChartyColors.Blue),
)

Then add interactions and styling declaratively:

LineChart(
    data = { priceData },
    color = ChartyColor.Solid(ChartyColors.Blue),
    lineConfig = LineChartConfig(
        interpolation = LineInterpolation.SMOOTH,
        downsampleThreshold = 800,          // stays smooth over huge series
    ),
    crosshair = ChartCrosshair(),            // draggable guide line and label
)

👉 Quick start

What you get

  • 35 chart types — bar and its dozen variants, line, area, scatter, bubble, combo, pie, radar, gauges, candlestick, calendar and matrix heatmaps, Gantt, funnel, and projected 3D.
  • Five targets from one API — Android (minSdk 24), iOS, JVM desktop, JavaScript and WebAssembly.
  • Live data — a rolling window that slides as points arrive, scrollback through history, and a jump-to-latest pill.
  • Interactions — a draggable crosshair that can sync across charts, tooltips drawn as your own Composable, persistent markers, zoom, pan, and brush selection.
  • Theming — one ChartyTheme carrying typography, colours, shapes and dimensions that every chart resolves its config against.
  • PNG export, LTTB downsampling for large series, per-point screen-reader traversal, and an Android baseline profile shipped in the AAR.

Apps using Charty

Using Charty? Open a PR to add your app.

Contributing

The documentation site is generated from the markdown in docs/charty — edit the page, not the HTML. ./gradlew :docsite:assembleSite builds the whole site locally and fails on a dead link.

Support

If Charty helps you, please ⭐ the repo — it genuinely helps.

Sponsor Buy Me a Coffee

License

Copyright 2025 The Charty Authors

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
android
android-library
android-studio
cmp
compose
compose-multiplatform
kmp
kotlin
kotlin-android
kotlin-library
kotlin-multiplatform

hi-manshu/charty

Weave data into enchanting Jetpack Compose graphs—no potions required! 📜🔮

Kotlin

1,289

243 commits

updated Aug 31, 2026

See the code

README

Charty

Banner

A sleek, lightweight charting library for Jetpack Compose — and, uniquely, for Kotlin Multiplatform: one codebase renders your charts on Android, iOS, Desktop, and the Web. Built with ❤️ by @hi-manshu.

Charty Charty Static Check GitHub Repo stars AndroidWeekly Twitter Follow

📖 Documentation · ▶️ Playground · 📝 Changelog

Every chart has a page with a picture, the code that produced it, and its full configuration. The playground runs all 35 of them in your browser, every option exposed as a control you can turn.


Install

commonMain.dependencies {
    implementation("com.himanshoe:charty:3.0.0")
}

Projected 3D charts are a separate artifact on its own version, and every declaration in it is @ChartyExperimental — see charty-3d for the opt-in, and for an honest account of what tilting a chart costs you.

implementation("com.himanshoe:charty-3d:1.0.0")

Your first chart

LineChart(
    data = { listOf(LineData("Mon", 20f), LineData("Tue", 45f), LineData("Wed", 30f)) },
    color = ChartyColor.Solid(ChartyColors.Blue),
)

Then add interactions and styling declaratively:

LineChart(
    data = { priceData },
    color = ChartyColor.Solid(ChartyColors.Blue),
    lineConfig = LineChartConfig(
        interpolation = LineInterpolation.SMOOTH,
        downsampleThreshold = 800,          // stays smooth over huge series
    ),
    crosshair = ChartCrosshair(),            // draggable guide line and label
)

👉 Quick start

What you get

  • 35 chart types — bar and its dozen variants, line, area, scatter, bubble, combo, pie, radar, gauges, candlestick, calendar and matrix heatmaps, Gantt, funnel, and projected 3D.
  • Five targets from one API — Android (minSdk 24), iOS, JVM desktop, JavaScript and WebAssembly.
  • Live data — a rolling window that slides as points arrive, scrollback through history, and a jump-to-latest pill.
  • Interactions — a draggable crosshair that can sync across charts, tooltips drawn as your own Composable, persistent markers, zoom, pan, and brush selection.
  • Theming — one ChartyTheme carrying typography, colours, shapes and dimensions that every chart resolves its config against.
  • PNG export, LTTB downsampling for large series, per-point screen-reader traversal, and an Android baseline profile shipped in the AAR.

Apps using Charty

Using Charty? Open a PR to add your app.

Contributing

The documentation site is generated from the markdown in docs/charty — edit the page, not the HTML. ./gradlew :docsite:assembleSite builds the whole site locally and fails on a dead link.

Support

If Charty helps you, please ⭐ the repo — it genuinely helps.

Sponsor Buy Me a Coffee

License

Copyright 2025 The Charty Authors

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
android
android-library
android-studio
cmp
compose
compose-multiplatform
kmp
kotlin
kotlin-android
kotlin-library
kotlin-multiplatform

Project health

Latest release

3.2.0 · Sep 1, 2026

Releases this year

4

Significant stargazers

Martin Bonnin

467 followers · starred Oct 2024

Yuri Schimke

495 followers · starred Aug 2022

Cheese

7 followers · starred Nov 2025

Alex Styl

458 followers · starred Aug 2022