The ZZ method is a 3x3 speedsolving method created by Zbigniew Zborowski in 2006. The method is focused both on low move count and high turning speed; during the majority of F2L, the solver only needs to make L, U, and R moves, which means that the solver's hands never leave the left and right sides of the cube, resulting in faster solving. In addition, edges are already oriented when the solver reaches the last layer, meaning the solver has fewer cases to deal with. The method, including both EOLine and EOCross, was originally proposed in 2003 by Ryan Heise on the Yahoo! Group in this post. However, it became popular and associated with Zbigniew Zborowski after he independently created the method in 2006 and developed a website.
- EOLine: This is the most distinctive part of the ZZ method. In this step, the solver orients all the edges while placing the DF and DB edges. The two edges and the bottom centre are the "line" in EOLine. This step puts the cube into an <L, U, R> group, meaning F, B, or D moves are not required for the remainder of the solve. Although this step may seem like a hinderance, it speeds up the F2L and LL.
- ZZ F2L: The solver creates a 2x3x1 block on each side of the line via blockbuilding. Because one only needs to do L, U, and R moves, solving is very quick.
- LL: The solver uses algorithms to solve the remaining pieces. Since the edges in the LL were oriented during EOLine, it can be completed in fewer moves and/or with fewer algorithms to learn.
- Phasing During last slot, the LL edges are permuted using Phasing to permute opposite edges to be opposite using 3 different inserts. This reduces the amount of LL cases.
- Corner Permutation The first block can be solved slightly differently or an alg can be used to permute the corners such that the rest of the solve can be done 2-gen.
There are several variations of the ZZ method (example solves for each variant), each of which treats the F2L and LL differently. When the ZZ method was proposed, the original variants on Zbigniew Zborowski's website were ZZ-a, b, c, d, and e.
Solving F2L and LL separately
- OCLL + PLL: LL is solved using OCLL to orient the LL corners, then PLL is used to permute the LL. This is the simplest of all the variants and the most used when beginning to use ZZ.
- OCELL + CPLL: This is similar to using COLL + EPLL, but more of the algorithms can be 2-gen. First the LL corners are oriented and LL edges are permuted in one step, then the cube is completed with CPLL in the final step.
- ZZ-a: ZBLL, a subset of 1LLL (one-look last layer), is used to solve the last layer with one alg. There are 493 cases and can be done with less algs by taking advantage of mirrors.
- COLL + EPLL, or ZZ-VH (sometimes mistakenly called ZZ-a): COLL is used to orient and permute the LL corners while preserving LL edge orientation (42 algorithms), EPLL is left to permute the LL edges (4 algorithms). Often used in OH solving because all EPLL's can be solved 2-gen.
- COLL+1: This LL method solves the four LL corners and a single LL edge. The second step will then always be either a U-Perm or a skip.
- NMLL: An LL method that is compatible with non-matching blocks and matching blocks. The first step separates the colors belonging to the left and right layer. The second finishes permutation.
- ZZ-top: During EOline, orient only the cross edges and F2L edges. After ZZF2L you will end up with the same last layer as CFOP, so you can just do OLL/PLL.
Influencing LL during F2L
- ZZ-b: During last slot, the LL edges are phased and ZZLL is used to solve the LL in one look.
- ZZ-reduction: During the Last Slot, the LL edges are phased and a 2-look orientation + permutation approach is used, with the phased edges preserved in the orientation step, resulting in a reduction of PLL cases down to 9 compared to 21 in full PLL. This is the least algorithm intensive 2-look method for solving the last layer of any 2LLL method, needing 7 + 9 = 16 total algorithms.
- ZZ-WV and ZZ-SV: Before the last corner-edge pair is solved, the LL corners are oriented with PLL left to be done.
- ZZ-WVCP and ZZ-SVCP: Before the last corner-edge pair is solved, the LL corners are oriented and permuted at the same time resulting in an EPLL finish. This is similar to ZZ-VH except that the corners are solved during insertion of the last pair.
- ZZ-c: The last layer corners are oriented during insertion of the last F2L block. This system is similar to using Winter Variation, but can be applied to any last block situation and uses many more algorithms. Conceptually, the comparison of ZZ-c with ZZ-WV is similar to the comparison of ZBLS with VH. This variant was proposed by Mitchell Stern and included as one of the variants on Zbigniew Zborowski's website.
- ZZ-blah: The last layer corners are disoriented during insertion of the last slot allowing the last layer to be solved using the Pi and H subsets of ZBLL.
- MGLS-Z: During last slot, only the edge is placed. LL corner orientation and the final F2L corner are then solved in one step using CLS. Finally the solve is completed with PLL.
- EJLS: Similar to MGLS-Z, but using less algorithms. During the F2L last slot the edge and corner are connected and placed, but the corner is not necessarily oriented. A subset of CLS is then used to orient the last slot corner along with the LL corners. PLL to finish.
- ZZ-CT: This variant solves EO and all but one F2L slot, then inserts the last edge and orients corners in one algorithm, then solves the rest (PLL and one corner), again in one algorithm.
- ZZ-C++: A hybrid of ZZ-CT and ZZ-C proposed by Chris Tran where the best algorithm is chosen depending on the situation. 
- ZZ-LSE or ZZ-4c: Instead of solving EO and a line comprising of DF and DB, solve EO and then place the edges that go to UL and UR at DF and DB. After ZZF2L, you can then do COLL and then go directly into Roux LSE step 4c, which is close to two moves more efficient than EPLL. 
- ZZ-Portico or just Portico: Rather than at the start, the DF edge is solved at the end. Compared to ZZ-VH, this leads to a slightly more efficient solve and an easier first step at the price of <RULF2(M)> turning (as opposed to ZZ's <RUL>) and 12 additional algorithms.
- ZZ-Zipper: One of 614 L5CO algorithms followed by L5EP is used to solve last slot and last layer. Alternatively, the last D-layer corner can be solved earlier or Conjugated CxLL can be used in order to achieve 2-look LSLL in 54 algorithms.
- ZZ-Tripod: After F2L-1, a 1x2x2 block is built on the top face. Then the last pair is inserted using an NLS algorithm to preserve the block followed by TELL, a subset of Tripod LL with edges already oriented. (More information can be found on the Tripod Method page.)
- ZZ-0: During LSLL, edges are permuted and the unsolved corners are oriented such that they can be solved using <RUD> 3-cycle commutators. The name comes from the concept of "zeroing".
Solving Corner Permutation during F2L
These methods solve Corner Permutation leaving the cube in a 2-gen state.
- ZZ-d: Just before the completion of the left block, corners are permuted and 2GLL can be used to finish. Only a maximum of 2 additional moves are required to correctly solve CP. This process is called CPLS. As of 2021, due to a simplification of the CP recognition process, CPLS has become viable for speedsolving and is currently the flagship approach to ZZ-D.
- ZZ-e / ZZ-Orbit: Corners are permuted during insertion of the last F2L's pair. Recognition is not so straight forward, but much faster than that of ZZ-d. Once performed, 2GLL can be used for 1-look last layer. This has many similarities to CPLS+2GLL, but was developed independently. ZZ-e has the alternate name of ZZ-Orbit because community member Kim Orbit was the first to completely develop the variant. Thread: Guide:
- ZZ-z: After left block, CP is solved, then a 1x2x2 block is made on BDR and LPELL is used to permute the edges and finish F2L, and 2GLL is left to finish the solve.
- ZZ-porky v1: Also known as ZZ-e. The D layer corners are put in the D layer (not necessarily permuted) and alg is used to solve corner permutation. Post:
- ZZ-Rainbow: A variant of ZZ-porky v1. After EOLine, place the DFR and DRB corners in place and get the Left Block pieces in the L and U layers. Then either solve the first block<LU> or do a z rotation and then solving it RU. After first block, you have already done the setup moves for ZZ-porky v1, and so execute the ZZ-porky algorithm, then solve the rest of the cube 2-gen.
- ZZ-porky v2: After solving the first square of ZZF2L, place the DRB and DRF corners and AUF the last first block corner to UBL. then execute an algorithm to permute the corners. Followingly, insert the last first block pair using only <LU> moves, then solve the rest of the cube with only <RU> moves. Post: 
- CPLS + 2GLL: After solving ZZF2L-1 slot, insert the edge. then insert the final corner while solving CP, then finish with 2GLL.
- ZZ-Snake Pattern (ZZ-SP): After solving the first ZZF2L block on L, solve a 1x2x3 block on the top of the cube with <RU>, then rotate with a z' and solve the LL.
- ZZ-LOL (Line On Left): By solving EOEdge (EO + LF and LB edges) instead of EOLine, the cube is reduced to <RUD> rather than <RUL>. This results in a standard ZZ solve offset by a z rotation with way better ergonomics in exchange for very bad lookahead.
- WaterZZ: WaterZZ was inspired by WaterRoux which in turn was inspired by Waterman. Instead of an EOLine, the solve is started with EO222 (EO + 2x2x2 block). Then, a 1x2x2 square and a pair are solved in BR and FL, respectively. This is followed by one of 614 L5CO algorithms and then L6EP to finish off the solve.
- ZZ-EF: ZZ-EF is a variant that allows for a low movecount ZZ F2L by solving pairs with incorrect corners which only have to satisfy the constraint of forming a 3-cycle on the D layer. This is followed by reducing the last layer to a 3-cycle, too, and finishing the solve by performing the two algorithms which solve these 3-cycles.
- ZZ-Slice: ZZ-Slice starts off with EOSlice, followed by solving ZZ F2L in pairs. However, the pairs' corners do not have to be permuted, only oriented, correctly. After that, LL corners are oriented, the last six edges are permuted and the solve is finished with CPBL. This variant, however, averages 65-75 moves.
- Reduced Move Set: F2L is completed using only R, U and L turns and no cube rotations are required. This makes ZZ especially suited for one-handed solving.
- Lookahead: Pre-orientation of edges halves the F2L cases and makes edges easier to find and connect to blocks/corners. During a ZZ solve, the cube is typically held in the same orientation through out the solve which allows a memory map of pieces' correct locations to develop allowing fast/intuitive ability to place pieces without thinking/looking.
- Efficiency: With a blockbuilding-based F2L and pre-orientation of LL edges around 55 moves can be achieved without difficulty. Optimising F2L blockbuilding and adoption of more advanced LL systems such as ZBLL will reduce this move count significantly.
- Ease of Learning: Most of the difficulty in ZZ is confined to the EOLine stage. Intuitive blockbuilding during F2L is fairly easy to pick up and only 20 algorithms (assuming use of mirrors) are required to achieve a 2-look last layer with OCLL/PLL.
- Flexibility: With edges pre-oriented many systems exist for completing the last layer in a ZZ solve, ranging from OCLL/PLL to ZBLL. A blockbuilding F2L also allows for the development of many short cuts and tricks as skill improves.
- Reliance on Inspection - ZZ makes heavy use of inspection time, which is fine when 15 seconds is given, but in situations where no inspection is used it can be a drawback. For example, when using reduction on big cubes or within multi-solve scenarios starting a ZZ solve can be difficult. This isn't much more than other methods though.
- Difficulty of EOLine - EOLine is weird to get used to at first. In order to plan and execute in one step and takes a long time to master. New users should expect it to take in the order of months to achieve full EOLine inspection in 15 seconds. In the interim, breaking it down into two steps (EO + Line) can be used as a fall-back.
- 2 Extra F2L Cubies to Solve - The first step of Fridrich (Cross) and ZZ (EOLine) are roughly comparable in terms of move-count. The remainder of F2L in ZZ requires solving of two more cubies (10 in total) than Fridrich slots (8 in total). However, freedom to fully rotate the L and R faces and the use of more efficient block building compensates for this apparent disadvantage.
- Switching between L and R moves - On the other hand, this can feel weird. It takes some time getting used to and mastering. After one does master this though, f2l is really smooth.
Other EO Steps (the most popular ones being EOCross and EOArrow) instead of EOLine can be used as a first step. EOCross has a slightly higher movecount which is made up for with its easier lookahead and reduced regrips. (See the EO Steps article for more information.)
ZZ on other puzzles
The concept of orienting edges early to make the rest of the solve more ergonomic and rotationless has been applied to different puzzles. A list of puzzles and known ZZ-based methods for them is shown here:
- Andrew Huang
- Andrew Nathenson
- Chris Tran
- Conrad Rider
- Dale Palmares
- John Smith
- Joseph Tudor
- Nathaniel Gee
- Phil Yu
- Simon Kalhofer
- Zbigniew Zborowski
- Very in-depth ZZ Method Tutorial (EOCross/EOArrow not described)
- Detailed, up-to-date ZZ website
- EOLine Solver (Java)
- Comparison of ZZ variants (movecount)
- Original ZZ Website
- YouTube: MegaZZ
- YouTube: ZZ Beginner's Tutorial
- YouTube: EOLine tutorial
- YouTube: ZZ Method Variations
- Speedsolving.com: ZZ Speedcubing Method
- Speedsolving.com: ZZ Cubers
- Speedsolving.com: ZZ/ZB Home Thread
- Speedsolving.com: ZZF2L Move Count
- Speedsolving.com: Noob's Approach to Missing Link for ZZ-d
- Speedsolving.com: ZZ-blah Algorithms
- Speedsolving.com: Example solves for all ZZ variants