Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Classyshark Bytecode Viewer

alt text

Download & Run

To run, grab the latest JAR and run java -jar classyshark-bytecode-viewer.jar. Optionally you can add a class file to open.


Instantaneously understand and assess any Kotlin code.


The most accurate and measurable way is to look at Kotlin generated executable (.class) files, the same files that both JVM and Android DX tool see.


From every kotlin-compiler generated class file you will see 3 tabs:

  1. Equivalent Java code
  2. Equivalent Java bytecode
  3. Hex view

The (mind) flow will be as follows:

  1. From Kotlin code to Java code
  2. From Java code to Java bytecode (class format)
  3. From Java bytecode to hex view (raw binary format)

Here is the tricky part, instead of doing source to source translation from Kotlin to Java, it is better (faster and accurate) to decompile Kotlin generated class file right into Java.

To support the above the we use the following 2 libraries:

  • Procyon- an open source Java decompiler.
  • ASM - the best Java bytecode reading library (used both by Kotlin and Android Studio).

This is not an official Google product.


Copyright 2017 Google Inc.

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

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.