owned this note
owned this note
Published
Linked with GitHub
# Elden Ring - ZIP
---
> **THIS DOCUMENT IS NO LONGER BEING UPDATED, CHECK THE SOULS SPEEDRUNS WIKI PAGE ABOUT ZIPPING FOR UP-TO-DATE INFORMATION INSTEAD: https://soulsspeedruns.com/eldenring/zipping**
---
This is a document explaining the zip glitch in Elden Ring, how to do it and what you need to change on your system to make it consistent. This assumes game version 1.04, as that's the last version all relevant information is useful for the speedrun.
This was figured out from weeks of testing by various members of the SpeedSouls Discord community, including `Blade#7139`, `Daravae#0002`, `ModerateChaos#3261`, `seeker#1042`, `smelty#7960` and `ViRazY#0594`.
## What is the zip glitch?
The zip glitch is a consistent and reproducible, but very precise frame perfect glitch that sets your character's velocity very high for a single frame, causing your character to essentially teleport across large distances. It works on any game version.
Here is a quick demonstration of a zip:
![](https://i.imgur.com/2a9WN90.gif)
### How does it work?
The zip glitch works by aligning the move animation with the moment the block idle animation loops in a specific way.
The reason you have to block for it to work is because the block idle animation keeps playing in the background, while the normal idle animation does not.
It is believed that this passes on certain values to the next cycle of the block idle animation in a way that causes your velocity to be calculated wrong.
> ###### *Note: Keep in mind that with everything we know about the zip, this is just a theory based on what we observed and might not be correct.*
### What weapon setups are required?
There are two setups for the zip glitch that behave slightly differently. The first and slightly faster setup is the **medium shield zip**. It requires you to have a medium shield equipped in your left hand and any other weapon that is not considered a two-handed weapon in your right hand.
The second setup is the **two-handed zip**. It requires using any weapon two-handed, including shields or your character's fists.
### What are the exact timings for zips?
This document focuses only on the **one-step method** since it's the simplest and easiest known method. If you are curious about other possible methods, like the two-step method, feel free to ask about it in the dedicated zip thread on the SpeedSouls Discord server.
Zips are consistent, given correct inputs. The idea is that you wait while holding block until just before the loop in the animation, and then do a short directional key tap to align the animations.
The following picture should demonstrate that:
![](https://i.imgur.com/7gImDKU.png)
The blue part is the time you have to simply wait before the directional key tap, starting with holding down block. That duration is referred to as the **primary wait time**. An older term you might also hear sometimes is **initial block time**.
The green bit at the end is the directional key press, called the **primary move time**.
Keep in mind you still have to keep holding block until after the zip! The primary wait time simply refers to the time that has to pass between when you start holding block and when you do your directional key press. The zip will occur about 17 frames after the directional key is released.
As with everything else, movement and wait times are measured in **frames @ 60 FPS**, so about 16.6666... ms.
Zip timings are shared in the format `126/7`, where the first number is the primary wait time and the second number is the primary move time.
When performing a **medium shield zip**, the times must total **133 frames**.
Alternatively, when performing a **two-handed zip**, the times must instead total **139 frames**.
Keep in mind that in both cases, the primary move time has to be **4-10 frames long**, otherwise the zip will fail.
#### How to perform a medium shield zip:
This assumes timings of `126/7` and a directional key press of `W`, but keep in mind that you can do it in any direction.
Equip a medium shield in the left hand and either a one-handed weapon or no weapon at all in the right hand. A two-handed weapon, regardless of whether or not you are actually two-handing it, must not be equipped.
- Hold the walk (`Alt`) button while performing the zip.
- Begin by pressing block (right mouse button) for 126 frames.
- Then, while continuing to hold block, press `W` for 7 frames.
- Do not release walk or block until after the zip.
#### How to perform a two-handed zip:
This assumes timings of `132/7` and again a directional key press of `W`.
Equip any weapon two-handed, including fists or shields.
- Hold the walk (`Alt`) button while performing the zip.
- Begin by pressing block (right mouse button) for 132 frames.
- Then, while continuing to hold block, press `W` for 7 frames.
- Do not release walk or block until after the zip.
### How far can you zip?
> ###### *Note: Zip distance requires a lot more testing regarding exact values with different loadouts, but the information below is considered pretty accurate and represents our current understanding of zip distance.*
Distance measurements in this document use a specific value from the physics engine, called the **movement value**. This is not an actual distance in meters and instead is more like velocity, but it is a consistent value we can easily look up using Cheat Engine.
The timings determine the movement value of the zip. In general, you can say that primary move timings of 7, 8 and 10 give you roughly the same value, 4 and 9 give you slightly less and more (respectively) and 5 and 6 both give you rather low values, with 6 being the lowest.
Based on that, it is preferable to find setups with either a 7 or 8 frame primary move time, as that is slightly easier and more consistent when done by a human, and is what most macros use by default for that reason.
In addition to that, being on **heavy load** or **overloaded** increases the movement value a bit too. By about **7.99%** for medium shield zips and about **8.46%** for two-handed zips.
<details><summary>Click here to see detailed movement value data</summary>
Shield zip & two-handed zip, medium load:
| Move Time | Movement Value |
| :-: | :-: |
| 4 | 515.3120117 |
| 5 | 471.7408752 |
| 6 | 449.2333374 |
| 7 | 520.1359863 |
| 8 | 520.1118164 |
| 9 | 526.3693237 |
| 10 | 520.0956421 |
Shield zip, heavy load:
| Move Time | Movement Value |
| :-: | :-: |
| 4 | 556.5292358 |
| 5 | 509.4714355 |
| 6 | 485.1639404 |
| 7 | 561.7402344 |
| 8 | 561.7175903 |
| 9 | 568.4741821 |
| 10 | 561.7011108 |
Two-handed zip, heavy load:
| Move Time | Movement Value |
| :-: | :-: |
| 4 | 558.8994141 |
| 5 | 511.6361694 |
| 6 | 487.224823 |
| 7 | 564.126709 |
| 8 | 564.1046143 |
| 9 | 570.8900757 |
| 10 | 564.0892334 |
</details>
You can also bounce off of geometry, which drastically changes both your angle as well as the distance the character moves. We call those zips **bounce zips**. Extensive testing hasn't been done with bounces yet, although the distance and direction you get from them is consistent given the same setup and timings.
Lastly, since the zips are based on aligning animations, you can also wait and align it with a later cycle. We call that an **offset cycle** and the more offset cycles you go for, the shorter the zips. Like bounce zips, extensive testing hasn't been done yet so we don't know the exact movement values for each offset cycle.
Combining all of that gives us decent control over distance already, but that is not the end.. More on that later.
### How can zips fail?
There are a few ways zips can fail.
Of course the simplest failure is if your timings are off and you just do a short step forward. If your timings are short by a frame, you might notice a **short zip** that only zips you forward by like 10-20 cm.
Another simple fail is if your performance is not 100% stable. The game must maintain a constant internal `60.0002327` frame rate for the entire duration of the zip attempt. Any deviation from this exact frame rate will cause unexpected zip distances, or more likely, zip fails. The internal frame rate can be viewed in Cheat Engine using `fps.CT` or `er_zip_timer.CT`, which can be found at the bottom of the document. The Cheat Engine update interval must be set to 4ms in order to view the fps value for every frame. Other FPS tools such as Steam's performance overlay or RTSS (Rivatuner Statistics Server) cannot be used to determine the internal frame rate. More information can be found in the performance section.
A more nasty fail is a so called **rejected zip**. These can be noticed by your character kind of wiggling his weapon around, by you simply being pushed into a direction for a meter or two, or by the area you are in being reloaded. These rejected zips are currently believed to be caused by getting a successful zip that sends you somewhere the game simply says "nope" and refuses to place your character there.
## What is a mega zip?
A **mega zip** is an addition to the normal zip that allows you to go *much further*, with a wide range of possible distances. It is done by adding a *second directional key press* after the first one, but before you actually zip. The original zip setup doesn't change and the mega zip is only done by doing additional input *after* it, therefore it is also referred to as a **zip extension** and *requires* you to first hit the correct timings for the normal zip setup.
### What are the timings?
Adding to the normal zip timings, there are two additional times, called **extension wait time** and **extension move time**. Adjustments to these times affects the *distance* of a mega zip.
The required timings are **1-14 frames** for the wait time and **2-3 frames** for the move time. The longer the total time, the longer the mega zip.
A useful detail about this is if your extension wait time is at least 12 frames long, your extension move time can be longer than 3 frames since the zip itself acts as a kind of stop for it. Another detail is if you manage to hit the correct frames for the normal setup, but hold the directional key too long for the mega zip, the *whole zip* gets canceled.
Depending on your consistency with the different timings, you can make use of one detail or the other to improve your consistency. If you are very good at hitting the normal zip setup, for example, it might be worth going for an extension wait time somewhere in the middle to ensure if you get a zip, it is absolutely a mega zip. If on the other hand you can't reliably hit a 2-3 frame key press for the extension move time, it might be worth trying to go for at least a 12 frame extension wait time, although keep in mind the risk of accidentally getting a normal zip instead of a mega zip is higher in that case.
### How long are mega zip?
Mega zips are about **270% - 640% longer**, depending on the total extension wait and move time. Needless to say, this is very far.. Far enough, in fact, that it can be used to *kill bosses with zips*. This works by zipping so far that the boss arena despawns, causing the boss itself to fall to its death.
Timings for mega zips are shared like those of normal zips, but with the extension primary time and extension wait time added to the end, like this: `126/7/10/3`
Here is a comparison between a normal zip (`126/7`), a short mega zip (`126/7/1/2`) and a long mega zip (`126/7/14/2`):
![](https://i.imgur.com/h4xAHd4.gif)
Here is a graph showing the movement values of different total timings (`126/7/x/2`, heavy):
```vega
{
"$schema": "https://vega.github.io/schema/vega-lite/v5.json",
"width": 500,
"height": 200,
"data": {
"url": "https://gist.githubusercontent.com/Vinjul1704/517f084fb75848602e8dc065522dd76f/raw/c6f783f3be6b23efe39d6e906ad3cc59ebc0c45b/megazip_data_simplified.csv",
"format": "csv"},
"mark": {
"type": "line",
"tooltip": true
},
"encoding": {
"x": {"field": "extension", "type": "quantitative", "title": "Timing", "scale": {"zero": false, "domainMin": 3, "domainMax": 16}},
"y": {"field": "movement_zip", "type": "quantitative", "title": "Movement", "scale": {"zero": false, "domainMin": 1000, "domainMax": 4000}}
}
}
```
> ###### *Note: It is not 100% understood why there is a dip with 15 total extension time, although that value is exactly the same one you get when going for a 12 or 13 extension wait time and a >3 extension move time. For a 14 extension wait time and a >3 extension move time, you always get the same value as with 16 total extension time.*
As you can see, that's a loot of room to work with in terms of distance. Combining them with offset cycles allows for very good fine control over distance.
### How to perform a mega zip
As mentioned above, the mega zip is an extension of the normal zip, so the first part of the setup is the same.
This assumes a medium shield zip, timings of `126/7/10/3` and a directional key press of `W`.
- Hold the walk (`Alt`) button while performing the zip.
- Begin by pressing block (right mouse button) for 126 frames.
- Then, while continuing to hold block, press `W` for 7 frames.
- Wait another 10 frames after releasing `W`.
- Press `W` again for 3 frames.
- Do not release walk or block until after the mega zip.
## Performance
The zip glitch relies heavily on performance, although despite common beliefs, it is **not hardware dependent**. Minimum spec and even below minimum spec hardware is powerful enough to run the game at the required performance and do the glitch consistently.
What does it depend on then? Mostly background processes and OS settings. Here are some steps to improve performance and thereforce consistency:
- Make sure you are not running the game with EAC. You can find instructions on how to disable EAC here: ~~https://wiki.speedsouls.com/eldenring:EAC_Bypass~~ (waiting for wiki migration)
- Close as many background programs as possible. Do not forget to check the background processes in the task bar too. If you have some mouse/keyboard RGB software, close it. Antivirus? Close it. Printer software and other drivers? Close it. Vanguard or other anticheat software from different games? Close it. Using an animated wallpaper? Close it. You get the idea.
- Optimize the programs you *absolutely* need. For web browsers and Discord, turn off hardware acceleration. In the case of Discord, it's enabled in 2 places, both under "Voice & Video" as well as "Advanced". As for Steam, log out of Steam friends (set yourself to offline), go into the settings and disable hardware acceleration and enable low performance/bandwith modes for your library and after that turn on small mode. Disable any sort of ingame overlays, like the Steam overlay, Discord overlay or Nvidia/AMD GPU overlay. Turn off any sort of instant replay too, like Nvidia ShadowPlay or AMD ReLive. Go into your Windows settings, to "Ease of Access" and disable both animations and transparency effects. In OBS (or any other recording/streaming software), mess around with settings a bit and try a GPU encoder instead of a CPU one.
- Turn off any sort of external FPS limiter. This is an important point, as having one enabled somewhere will drop your consistency to 0%! Make sure you don't have one set in RTSS and also check your GPU settings to make sure there is no option like that enabled either. Any options that claim to "improve efficiency" or "improve latency" can cause issues, as those often tend to dynamically mess with FPS limits on purpose!
- Set your ingame settings to "low". This is just to ensure performance is definitely not limited by graphics.
- Assign OBS and other programs to different cores than the game. This can potentially help and is definitely worth a try, especially if you notice that consistency drops as lot when you are recording or streaming. This can be done via the task manager, where you go to the details tab and change the core affinity of running processes.
- Try programs like ParkControl (https://bitsum.com/parkcontrol/) and Process Lasso (https://bitsum.com/process-lasso/). Like above, these may or may not help, but are definitely worth a try.
- Restart your game after using Cheat Engine to adjust game speed! Current cheat tables to not correctly restore the game speed, which makes zips impossible.
- Adjust affinity of `eldenring.exe` in task manager. First, remove a core, making sure to click ok, then adjust affinity a second time to add the core back. On some systems, this can dramatically improve frame time consistency, presumably due to some way in which the Windows scheduler responds to affinity changes.
- Make sure your monitor's refresh rate is actually 60 Hz and not 59.9x Hz. This can be verified using a tool called CRU (Custom Resolution Utility). If the highest detailed resolution is in fact 59.9x Hz, you can try a different monitor, a different resolution in fullscreen mode that shows as 60 Hz, or overclock your monitor to actual 60 Hz using CRU (keep in mind that it might void your warranty).
You can measure performance using the performance readout CT found in the tools section of this guide. Make sure you change the polling interval in Cheat Engine to something like 10ms.
You need the values to be *exactly* these during the whole zip setup:
```
FPS: 60.0002327
Frametime: 0.01666660234
```
A small trick that has been found that might help with consistency is to open specific ingame menus before doing the zip, as that stabilizes performance temporarily for some reason. The ingame map works for that, so just quickly open and close it.
> ###### *Note: That trick has not been tested by a lot of people and success varies between those who have, so please let us know how it works for you.*
## Tools
Here are some additional tools that might help with zips:
**Metronome Timings Helper (Software)**
https://github.com/olivera18/ZipHelper
**GUI Macro (AutoHotkey Script)**
https://cdn.discordapp.com/attachments/959194669407948880/969349017437868042/Elden_Ring_Zip_Macro_GUI.ahk
**Zip Tools (Cheat Engine Table)**
https://cdn.discordapp.com/attachments/959194669407948880/1083765510312820866/zip_tools.CT