Power BI is turning 10! Tune in for a special live episode on July 24 with behind-the-scenes stories, product evolution highlights, and a sneak peek at what’s in store for the future.
Save the dateEnhance your career with this limited time 50% discount on Fabric and Power BI exams. Ends August 31st. Request your voucher.
I am using this library, https://github.com/microsoft/PowerBI-JavaScript, to embed reports and handle bookmarks. I am calling capture() from the bookmarksManager object on my report. This returns a bookmark with the state. The state is a base64 encoded string. I am trying to decode the string for testing purposes, but I can't get it to decode correctly. I have used Mime tools in Notepad++ and various online decoders, but they all return gibberish.
Is there a trick to decoding base64 encoded bookmark states?
The state of bookmarks is gzipped, so after you decoded it from base64 you need to decompress it:
static class Program
{
public static void Main()
{
// Replace with your actual Base64-encoded and gzipped string
string encodedAndGzippedString = "";
// Decode the Base64 string
byte[] decodedBytes = Convert.FromBase64String(encodedAndGzippedString);
// Decompress the gzipped data
string decompressedString = DecompressGzip(decodedBytes);
Console.WriteLine("Decompressed data:");
Console.WriteLine(decompressedString);
}
public static string DecompressGzip(byte[] compressedData)
{
using (var memoryStream = new MemoryStream(compressedData))
using (var gzipStream = new GZipStream(memoryStream, CompressionMode.Decompress))
using (var reader = new StreamReader(gzipStream, Encoding.UTF8))
{
return reader.ReadToEnd();
}
}
}
Great post @klirium - we've been struggling with trying to find a way to interpret saved bookmarks to handle updates when a change is made to a report and then the previous saved bookmarks become partially invalid. I haven't tested your code, but I was able to verify the concept of base64 and decompress does work. This site gives a nice way to plug in individual encoded bookmarks and see the plaintext https://www.zickty.com/gziptotext
Hi @Log4TurtleShell ,
Please review the following links, hope they can help you.
Base64 encoding and decoding in client-side Javascript
How do I decode a Base64 encoded string in JavaScript?
console.log(atob('TXkgU3RyaW5nIFRvIEVuY29kZQ=='));
Base64 Decode a Value in Node.js
const plain = Buffer.from('dXNlcm5hbWU6cGFzc3dvcmQ=', 'base64').toString('utf8')
Best Regards
Thank you for your reply.
Using atob() still returns gibberish. Am I wrong that the bookmark state should be able to be decoded to readable text?
Did you ever get a solution to this? I am also trying to decode the bookmark state, but unable to get anything other than gibberish as well.
I did.
You can use below python script to decode the bookmark State.
The output is a JSON. Hope this helps.
import base64
import gzip
from io import BytesIO
def decode_base64_gzip(encoded_string):
# Step 1: Base64 decode
decoded_data = base64.b64decode(encoded_string)
# Step 2: Gzip decompress
with gzip.GzipFile(fileobj=BytesIO(decoded_data)) as gzip_file:
decompressed_data = gzip_file.read()
return decompressed_data.decode('utf-8')
# Example usage
encoded_string = "your_base64_gzipped_string_here"
decoded_string = decode_base64_gzip(encoded_string)
print(decoded_string)
Unfortunately, I did not. 😞
Check out the July 2025 Power BI update to learn about new features.
This is your chance to engage directly with the engineering team behind Fabric and Power BI. Share your experiences and shape the future.
User | Count |
---|---|
6 | |
6 | |
3 | |
2 | |
2 |