---
name: "IO::Uncompress::Brotli"
section: "3pm"
platform: "linux"
package: "perl-io-compress-brotli"
version: "1:0.023-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/IO::Uncompress::Brotli"
---

# IO::Uncompress::Brotli(3pm)

Read Brotli buffers/streams

## NAME

IO::Uncompress::Brotli - Read Brotli buffers/streams

## SYNOPSIS

```
  use IO::Uncompress::Brotli;
  # uncompress a buffer (yielding at most 10MB)
  my $decoded = unbro $encoded, 10_000_000;
  # uncompress a stream
  my $bro = IO::Uncompress::Brotli->create;
  while(have_input()) {
     my $block = get_input_block();
     my $decoded_block = $bro->decompress($block);
     handle_output_block($decoded_block);
  }
```

## DESCRIPTION

IO::Uncompress::Brotli is a module that decompresses Brotli buffers and streams. Despite its name, it is not a subclass of IO::Uncompress::Base and does not implement its interface. This will be rectified in a future release.

### One-shot interface

If you have the whole buffer in a Perl scalar use the **unbro** function.

- **unbro**(*$input*, *$maximum\_decoded\_size*)

  Takes a whole compressed buffer as input and returns the decompressed data. It allocates a buffer of size *$maximum\_decoded\_size* to store the decompressed data, if this is not sufficient (or there is another error) this function will croak.

  As of version 0.004\_002, the *$maximum\_decoded\_size* argument is optional. If not provided, **unbro** uses the streaming interface described in the next section to decompress the buffer in blocks of one megabyte. The decompressed blocks are concatenated and returned.

  Exported by default.

### Streaming interface

If you want to process the data in blocks use the object oriented interface. The available methods are:

- IO::Uncompress::Brotli-\>**create**

  Returns a IO::Uncompress::Brotli instance. Please note that a single instance cannot be used to decompress multiple streams.

- $bro-\>**decompress**(*$block*)

  Takes the a block of compressed data and returns a block of uncompressed data. Dies on error.

## SEE ALSO

RFC 7392 Brotli Compressed Data Format: \<https://tools.ietf.org/html/rfc7932\>

Brotli source code: \<https://github.com/google/brotli/\>

## AUTHOR

Marius Gavrilescu, \<marius@ieval.ro\>

The encoder bindings, modernisation of the decoder bindings and a clean up of the overall project were contributed by:

- Quim Rovira, \<quim@rovira.cat\>

  - Ævar Arnfjörð Bjarmason, \<avarab@gmail.com\>

  - Marcell Szathmári

  - Mattia Barbon, \<mattia@barbon.org\>

  POD fix by Mark Zabaro, \<markzabaro@gmail.com\>.

## COPYRIGHT AND LICENSE

Copyright (C) 2015-2018 by Marius Gavrilescu

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.20.2 or, at your option, any later version of Perl 5 you may have available.
